STL常用操作:multiset

1.初始化

multiset<int> set1;	//创建空set,再赋值
multiset<int> set2(set1);    //拷贝构造
multiset<int> set3(set1.find(1), set1.end());    //迭代器构造
multiset<int> set4(arr, arr+5);    //数组构造
multiset<int> set5(move(set2));    //移动构造
multiset<int> set6 {1,2,3,4};//使用initializer_list初始化
multiset<int, greater<int>> set7;    //创建降序排序的set

2.常用操作

set1.find(2);    //查找2,返回第一个找到的迭代器,失败返回end()
set1.count(2);    //返回2出现的次数,0或其他
set1.emplace(5);    //插入5,返回指向插入元素的迭代器,不支持像insert那样一次插入多个元素
set1.insert(2);    //插入元素2
set1.insert(set1.end(),2);//指定插入位置,如果位置正确会减少插入时间
set1.insert(set2.begin(), set2.end());//使用范围迭代器插入
set1.insert({1,2,3});    //插入initializer_list
set1.erase(2);	    //删除操作,成功返回删除的元素个数,失败返回0
set1.erase(set1.find(2));	    //删除第一个找到的元素,成功返回下一个元素的迭代器
set1.erase(set1.begin(), set1.end());    //删除set1的所有元素,返回指向end迭代器
set1.empty();        //是否为空
set1.size();        //大小
multiset<int>::iterator it = set1.begin();	    //返回指向set1首元素的迭代器
multiset<int>::const_iterator c_it = set1.cbegin();	    //返回指向set1首元素的常量迭代器
multiset<int>::reverse_iterator r_it = set1.rbegin();	    //返回一个逆序迭代器
multiset<int>::const_reverse_iterator cr_it = set1.crbegin();	    //返回一个逆序迭代器
multiset<int>::iterator it = set1.lower_bound(2);    //返回键值大于等于给定元素的第一个元素
multiset<int>::iterator it = set1.upper_bound(2);    //返回键值大于给定元素的第一个元素
pair<multiset<int>::iterator, multiset<int>::iterator> it = set1.equal_range(2);//返回一个pair,pair里面第一个变量是lower_bound返回的迭代器,第二个迭代器是upper_bound返回的迭代器
set1.clear();    //清空

3.不常用操作

set1.emplace_hint(set1.end(),12);//提示插入的位置,如果指定的位置是真正要插入的位置,会减少插入时间
set1.swap(set2);    //交换,要求两个set的类型相同
set1.get_allocator();    //返回分配器
set1.max_size();          //返回可以容纳的最大元素个数
multiset<int>::key_compare cmp = set1.key_comp();//返回set1比较值大小的函数,接收两个值作为参数,<则返回true,同value_comp()
multiset<int>::value_compare cmp1 = set1.value_comp();//返回set1比较值大小的函数,接收两个值作为参数,<则返回true
set1.merge(set2);    //合并两个set,C++17支持

4.遍历

  • 迭代器
for(multiset<int>::iterator it = set1.begin(); it != set1.end(); ++it) cout << *it << " ";
  • C11
for(int x : set1) cout << x << " ";

 

5.算法

上一篇:STL源码剖析学习记录(二)


下一篇:C++语法基础之STL集合类