C++容器—— set 和 multiset

一、set

1.介绍

1. 与map/multimap不同,map/multimap中存储的是真正的键值对,set中只放value,但在底层实际存放的是由构成的键值对。

2. set中插入元素时,只需要插入value即可,不需要构造键值对。

3. set中的元素不可以重复(因此可以使用set进行去重)。

4. 使用set的迭代器遍历set中的元素,可以得到有序序列

5. set中的元素默认按照小于来比较

6. set中查找某个元素,时间复杂度为:O(logN)

7. set中的底层使用二叉搜索树(红黑树)来实现。

2.基本接口介绍

1.构造函数

C++容器—— set 和 multiset_第1张图片

2.迭代器

C++容器—— set 和 multiset_第2张图片

3.基本参数

C++容器—— set 和 multiset_第3张图片

4.修改操作

C++容器—— set 和 multiset_第4张图片

例子

#include 
void TestSet()
{
    // 用数组array中的元素构造set
    int array[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0, 1, 3, 5, 7, 9, 2, 4, 
6, 8, 0 };
 set s(array, array+sizeof(array)/sizeof(array));
 cout << s.size() << endl;
 // 正向打印set中的元素,从打印结果中可以看出:set可去重
 for (auto& e : s)
 cout << e << " ";
 cout << endl;
 // 使用迭代器逆向打印set中的元素
 for (auto it = s.rbegin(); it != s.rend(); ++it)
 cout << *it << " ";
 cout << endl;
 // set中值为3的元素出现了几次
 cout << s.count(3) << endl;
}

二、multiset

1.介绍

1. multiset中再底层中存储的是的键值对

2. mtltiset的插入接口中只需要插入即可

3. 与set的区别是,multiset中的元素可以重复,set是中value是唯一的

4. 使用迭代器对multiset中的元素进行遍历,可以得到有序的序列

5. multiset中的元素不能修改

6. 在multiset中找某个元素,时间复杂度为O(logN)

7. multiset的作用:可以对元素进行排序

总结

接口上,两者基本相同,最大的区别在于set不允许相同的值存入,而multiset允许相同的值输入

要求能够熟悉并且运用好set的基本接口,了解set的性质特点

你可能感兴趣的:(C++,c++,开发语言)