zoukankan      html  css  js  c++  java
  • stl中的一点常规用法

    一、set

    很多童鞋喜欢用set,它不但能给数据排序,还能去重复,即一个数据只能出现一次(多次保存只会留一份)。内部的原理是红黑树。

    红黑树是一种自平衡二叉查找树, 它可以在O(log n)时间内做查找,插入和删除。

    同其他需要排序的数据类型一样,为一个结构体的set,需要重载小于号。如果set<>中放的是int,char,float,double,short等简单数据类型,不需要重载<操作符。

    struct node {
        int i;
        int j;
    };
    
    set<node> s;
    bool operator <(const node &a, const node &b) {
         if (a.i > b.i)
            return false;
        else if (a.j > b.j)
            return false;
        return ture;
    };

    常规几个函数:

    1.insert()

    insert(x)可以将x插入set容器中,并且会自动排序(递增顺序)和去重;在进行插入的时候是不允许有重复的键值的,如果新插入的键值与原有的键值重复则插入无效。

    返回插入地址的迭代器和是否插入成功的bool并成的pair,时间复杂度为O(log n)

    2.find()

    find(value)返回set中对应值为value的迭代器:

    若不存在,返回set.end(),时间复杂度为O(log n)

    3.erase()

    删除单个元素或者删除一个区间内的所有元素:

    参数可以是元素或者迭代器,返回下一个元素的迭代器,时间复杂度为O(log n)

    4.size()

    返回set内元素的个数,一个整形变量,表示set中元素个数,时间复杂度O(1)

    5.clear()

    清空set中所有的元素,无返回值

    6.empty()

    检查set是否为空,返回一个bool型变量,1表示set为空,否则为非空,时间复杂度O(1)

    7. lower_bound(x)/upper_bound(x)

    lower_bound(x)表示查找>=x的元素中最小的一个,并返回指向该元素的迭代器

    upper_bound(x)表示查找>x的元素中最小的一个,并返回指向该元素的迭代器

  • 相关阅读:
    PHP面试系列之Linux(一) ----- Linux基础
    Redis入门(一)---安装
    获取主机ip地址
    Ubuntu安装Apache
    Ubuntu安装MySQL/MariaDB
    Ubuntu安装PHP7
    shell一次性执行多条命令
    将宿主主机上的目录挂载到Docker中
    bind 仿造 重写bind
    echars 饼状图 轮循 水平翻转
  • 原文地址:https://www.cnblogs.com/ikel/p/11661396.html
Copyright © 2011-2022 走看看