std::multiset

Set、multiset都是集合类,
差别在与set中不允许有重复元素,
multiset中允许有重复元素。
sets和multiset内部以平衡二叉树实现。
 
multiset 多重集合容器是一个可容纳重复元素键值的有序关联容器。
与 set 容器一样,使用红黑树作为容器的内部数据结构,元素的搜索操作都是具有对数级的算法时间复杂度。
它的 find 和 equal_range 函数,可搜索出某一键值下的所有元素位置。
 
multiset 缺点:和
set 一样,如果 插入、删除 操作频繁了,multiset 就不适合。 multiset 优点:相对于 set ,它能插入重复的元素。当然,它的检索速度也是非常快的。

 

 
遍历 multiset 容器元素
multiset<int>::iterator i, iend;
iend = ms.end();
for (i=ms.begin(); i!=iend; ++i)
cout << *i << ' ';

 

反向遍历 multiset 容器
multiset<int>::reverse_iterator ri, riend;
riend = ms.rend();
for (ri=ms.rbegin(); ri!=riend; ++ri)
cout << *ri << ' ';

 

find 搜索元素 
multiset<int>::reverse_iterator ri, riend;
riend = ms.rend();
for (ri=ms.rbegin(); ri!=riend; ++ri)
cout << *ri << ' ';

 

 

equal_range 搜索元素 
v = 13;
pair<multiset<int>::iterator, multiset<int>::iterator> p = ms.equal_range(v);

 

重复键值元素 
multiset<int>::iterator j;
cout << "键值为" << v << "的所有元素为:";
for (j=p.first; j!=p.second; ++j)
cout << *j << ' ';

 





 
posted @ 2018-06-21 10:22  osbreak  阅读(430)  评论(0编辑  收藏  举报