STL一些容器的使用

一些高级的STL使用

STL容器的官方文档

multiset

插入的元素可以重复,注意在循环的时候,如果有移除元素的操作(erase),那么it迭代的长度会改变。

1
2
3
4
5
6
7
8
9
10
11
multiset<int> ms;
ms.insert(3);
ms.insert(3);
ms.insert(1);
ms.insert(4);
//erase(i)会返回移除的数字的个数,并且multiset的长度会发生改变
for(multiset<int>::iterator it = ms.begin(); it!=ms.end(); it++){
cout<<ms.erase(3)<<endl;
cout<<ms.count(3)<<endl;
cout<<*it<<endl;
}

bitset

直接看后面的代码,申请的大小为位。

1
2
3
bitset<33> var;
var[0] = 1;
cout<<var<<endl;

multimap

应用的举例:ip对用多个url
mp.count(var), 是键var有多少个不同的值,若要打印出键var所有的值,要用lower_bound()和upper_bound()相结合。

1
2
3
4
5
6
7
8
9
10
11
12
13
multimap<int, int> mp;
mp.insert(make_pair(1, 2));
//cout<<mp.count(1)<<endl;
mp.insert(make_pair(1, 3));
//cout<<mp.count(1)<<endl;
//mp.insert(make_pair(2, 4));
//查询一个区间的有相同的键的所有的值
multimap<int, int>::iterator it = mp.lower_bound(1);
multimap<int, int>::iterator it1 = mp.lower_bound(2);
while(it!=it1){
cout<<it->second<<endl;
it++;
}

未解决的问题

文章目录
  1. 1. multiset
  2. 2. bitset
  3. 3. multimap
  4. 4. 未解决的问题
{{ live2d() }}