multiset多重集合容器
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;
}