set,multiset
集合,set会自动过滤掉重复的元素,multiset则允许有重复的元素,set一般用于元素多,且经常需要插入,删除数据时的场景。set中的元素默认按升序排列声明和初始化方式
set<T> s;set<T> s(s1);set<T> s=s1;set<T> s={a1,a2,a3,...}set<T> s(contain.begin(),contain.end())set,multiset的相关操作
insert(val) //插入元素insert(iterator1,iterator2) //擦汗如迭代器范围内的数据find(val) //查找元素 返回一个迭代器count(val) //统计元素个数erase(val) //删除元素erase(iterator1,iterator2)学习代码
#include <iostream>#include <set>using namespace std;template <typename Container>void PRintContents(const Container &c); //输出容器中元素的模板函数int main(){ set<int> a; multiset<int> ma; a.insert(60); a.insert(-1); a.insert(3000); //插入的数据自动按升序排序 a.insert(60); //自动过滤掉重复的元素 cout << "显示set里面的数据" << endl; /*set<int>::const_iterator it = a.begin(); //常迭代器 while (it != a.end()) { cout << *it << endl; ++it; }*/ PrintContents(a); set<int>::const_iterator itf = a.find(-1); //使用find()查找元素,找到后不能修改该处的数据,应为有默认顺序 cout << "找到了" << *itf << endl; cout << endl; ma.insert(3000); ma.insert(a.begin(), a.end()); ma.insert(3000); //允许有重复的元素 cout << ma.count(3000) << endl; //count()计算集合中某个元素的个数,set中为0或1 PrintContents(ma); //删除3000后的ma cout << "删除3000后的multiset" << endl; ma.erase(3000); //会删除所有的相同元素 PrintContents(ma); getchar(); return 0;}template <typename Container>void PrintContents(const Container &c){ Container::const_iterator it = c.begin(); while (it != c.end()) { cout << *it << endl; ++it; }}新闻热点
疑难解答
图片精选