std::multiset

Set、multiset都是集合类,
差别在与set中不允许有重复元素,
multiset中允许有重复元素。
sets和multiset内部以平衡二叉树实现。
 
multiset 多重集合容器是一个可容纳重复元素键值的有序关联容器。
与 set 容器一样,使用红黑树作为容器的内部数据结构,元素的搜索操作都是具有对数级的算法时间复杂度。
它的 find 和 equal_range 函数,可搜索出某一键值下的所有元素位置。
 
multiset 缺点:和
set 一样,如果 插入、删除 操作频繁了,multiset 就不适合。 multiset 优点:相对于 set ,它能插入重复的元素。当然,它的检索速度也是非常快的。
 
遍历 multiset 容器元素
1 multiset<int>::iterator i, iend;
2 
3 iend = ms.end();
4 for (i=ms.begin(); i!=iend; ++i)
5     cout << *i << ' ';
View Code

反向遍历 multiset 容器
1  multiset<int>::reverse_iterator ri, riend;
2      riend = ms.rend();
3      for (ri=ms.rbegin(); ri!=riend; ++ri)
4          cout << *ri << ' ';
View Code
find 搜索元素 
1  multiset<int>::reverse_iterator ri, riend;
2      riend = ms.rend();
3      for (ri=ms.rbegin(); ri!=riend; ++ri)
4          cout << *ri << ' ';
View Code
equal_range 搜索元素 
1 v = 13;
2 pair<multiset<int>::iterator, multiset<int>::iterator>  p = ms.equal_range(v);
View Code

打印重复键值元素 
multiset<int>::iterator  j;
cout << "键值为" << v << "的所有元素为:";
for (j=p.first; j!=p.second; ++j)
     cout << *j << ' ';
View Code
multiset 的其他函数用法

 

猜你喜欢

转载自www.cnblogs.com/osbreak/p/9207543.html
std
今日推荐