本文主要是介绍STL封装之multiset 超全整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
multiset内部的原理是用平衡二叉树实现,因此无论是查找还是删除操作,时间复杂度都比较低,给我们很大的遍历。
头文件:set
#include <set>
容器命名:multiset<数据类型>容器名称
操作集:
1.插入,删除
multiset<int> ms;ms.insert(7);//插入元素7ms.insert(10);ms.insert(5);cout << "ms contains:";while (!ms.empty())//empty判断容器ms是不是为空{cout << ' ' << *ms.begin();ms.erase(ms.begin());//删除容器首位置的元素,即(容器中最小的元素)}//ms contains: 5 7 10ms.erase(first, last);//删除容器中在区间[first, last)中的元素ms.erase(pos);//删除容器中第pos个元素
2.查找
ms.find(值);//在容器中找到某一个值,找到了返回地址,找不到,返回容器末位置 for (int i=1; i<= 5; i++)ms.insert(i * 10); // 10 20 30 40 50it=ms.find(50);//找到的是元素地址cout<<"The value of position it is:"<<*it<<endl;//The value of position it is:50ms.erase (it);//删除位置为it的元素ms.erase (ms.find(40));cout << "ms contains:";for (it = ms.begin(); it != ms.end(); it++)cout << ' ' << *it;//ms contains: 10 20 30
3.判断容器是都为空,容器大小,起始终止位置
ms.empty();//容器为空,返回true,否则返回falsems.size();//返回容器大小ms.clear();//清除容器ms.begin();//返回容器的起始位置ms.end();//返回容器的结束位置
4.计算某一个元素出现的次数
int myints[]= {73,12,22,73,73,12};//数某一个数出现的次数multiset<int> ms (myints,myints + 6);cout << "73 appears " << ms.count(73) << " times in ms.\n";//73 appears 3 times in ms.cout << "12 appears " << ms.count(12) << " times in ms.\n";//12 appears 2 times in ms.
5.输出容器中的所有元素
for (multiset<int>::iterator it = ms.begin(); it != ms.end(); it++)cout <<*it<<" ";
6.swap函数
int myints3[]= {1,2,3,4,5,6};multiset<int> first(myints3, myints3 + 3); // 4,19,72multiset<int> second(myints3 + 3, myints3 + 6); // 20,20,36first.swap(second);cout << "first contains:";for (multiset<int>::iterator it = first.begin(); it != first.end(); it++)cout << *it<<" ";cout << "\nsecond contains:";for (multiset<int>::iterator it = second.begin(); it != second.end(); it++)cout << *it<<" ";//first contains:4 5 6//second contains:1 2 3
这篇关于STL封装之multiset 超全整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!