C++第10课 STL容器 (八)
1.set
/* set:集合 1.1 不允许出现重复的数据,插入重复的只会存在一个 1.2 插入数据后,数据排好序,默认情况是从从小到大 No.1 set基本操作 No.2 处理自定义类型 */ void testSet() { set<string> s; s.insert("data1"); s.insert("data2"); s.insert("data3"); for (auto v : s) { cout << v << endl; } set<string>::iterator iter; for (iter = s.begin(); iter != s.end(); iter++) { cout << *iter <<endl; } //从小到大 set<int> sData; set<int, less<int>> lessData; //创建从大到小 set<int, greater<int>> greatData; } class MM { public: MM(string name, int age) :name(name), age(age) {} string getName() { return name; } int getAge() { return age; } bool operator<(const MM& object)const { return this->age < object.age; } protected: string name; int age; }; void testUserData() { set<MM> mmData; mmData.insert(MM("小可爱", 18)); mmData.insert(MM("小宝贝", 15)); mmData.insert(MM("小甜心", 28)); for (auto v : mmData) { cout << v.getName() << "\t" << v.getAge() << endl; } }
2.多重集合
void testmultiset() { //多重集合 只有排序功能,没有去重 multiset<int> intData; intData.insert(1); intData.insert(1); intData.insert(2); intData.insert(3); intData.insert(2); for (auto v : intData) { cout << v << "\t"; } cout << endl; //迭代器访问 multiset<int>::iterator iter; for (iter = intData.begin(); iter != intData.end(); iter++) { cout << *iter << "\t"; } cout << endl; }