STLのset与multiset

定义

set

set 是一个集合,Objective-C 语言中也有集合的概念。C++中的集合与OC中的集合也有不同的地方。

1、C++的set容器,其中包含的元素是唯一的,而且是有序的。

2、C++的set容器,是按照顺序插入的,不能在指定位置插入。

3、C++的set容器,其结构是红黑二叉树,插入数据的效率比 vector 快

以上内容来自网上

用一句话来概括的话set就是一个随便操作的数组~

然后有一点set容器是有序的集合,默认的顺序是从小到大的

multiset

multiset容器,与set容器相似,但是multiset容器中的元素可以重复。另外,他也是自动排序的,容器内部的值不能随便修改,因为有顺序的。


操作

set

1.find()

    iterator find(const key_type& __k)

    find函数查找元素为k的迭代器位置

2.lower_bound()

    iterator lower_bound(const key_type& __k)

    lower_bound函数查找小于等于元素k的迭代器位置

3.upper_bound()

    iterator upper_bound(const key_type& __k)

    upper_bound函数查找大于元素k的迭代器位置

4.insert()

    std::pair<iterator,bool> insert( value_type&& value );
    插入 value,并自动递增排序和去重,时间复杂度O(logN),其中N为set内的元素个数

5.erase()

    (1)erase(it),it 为所需要刪除元素的迭代器

    时间复杂度为O(1)。 可以结合find()函数来使用。

    (2)erase(value),value 为所需要刪除元素的值。

    时间复杂度为O(logN),N为set内的元素个数。

    (3)erase(first, last) 可以刪除一个区间内的所有元素,其中 first 为所需要刪除区间的起始迭代器,

    而 last 则为所需要刪除区间的末尾迭代器的下一个地址,也即为刪除 [first, last)。时间复杂度为O(last - first)

6.size()

    size() 用来获得 set 内元素的个数,时间复杂度为O(1)

7.clear()

    clear() 用来清空 set 中的所有元素,复杂度为O(N),其中N为set内元素的个数。

8.其他

    iterator begin():返回首元素的迭代器指针

    iterator end():返回尾元素的迭代器指针

   

    reverse_iterator rbegin():返回尾元素的逆向迭代器指针

    reverse_iterator rend():返回首元素前一个位置的迭代器指针

    int count(const Key& key) const:返回容器中元素等于key的元素的个数

    void swap(set& s):交换集合元素

好像就这么多了吧


multiset

好像用法跟set差不多这里就不多介绍了

上一篇:python – 添加计数器删除键


下一篇:STL(九)---set和multiset