multiset多重集合容器
同样使用红黑树来组织元素数据的,唯一不同的是,multiset允许重复的元素键值插入,而set则不允许。
头文件包含“#include <set>”
它包含重复元素,所以,在插入元素、删除元素、查找元素上较set有差别。
使用
multiset元素的插入
#include<iostream> #include<set> using namesace std; int main(){ //定义元素类型为string的多重集合对象s,当前没有任何元素 multiset<string> s; s.insert("abc"); s.insert("111"); s.insert("abc"); //定义迭代器 multiset<string>::iterator it; for(it=s.begin();it!=s.end();it++){ cout<<*it<<endl; } return 0; }
multiset元素的删除
- 采用erase()方法可以删除multiset对象中的某个迭代器位置上的元素、某段迭代器区间中的元素、键值等于某个值的所有重复元素,并返回删除元素的个数。
- 采用clear()方法可以清空元素。
//删除值为“abc”的所有重复元素,返回删除元素总数2 int n = s.erase("abc"); cout<<n<<endl;
查找元素
使用find()方法查找元素
- 如果找到,则返回该元素的迭代器位置(如果该元素存在重复,则返回第一个元素重复元素的迭代器位置)
- 如果没有找到,则返回end()迭代器位置。
//查找键值“111” multiset<string>::iterator it; it=s.find("111"); if(it != s.end()){//找到 cout<<*it<<endl; }else{//没有找到 cout<<"not find it"<<endl; }