C++ set / multiset 容器:
#include<iostream>
using namespace std;
#include<set>void printSet(set<int>&s)
{for (set<int>::iterator it=s.begin();it!=s.end();it++){cout << *it<<" ";}cout << endl;
}void test01()
{set<int>s1;//插入数据 只有insert方式s1.insert(10);s1.insert(50);s1.insert(10);s1.insert(40);s1.insert(20);//插入自动排序//set 容器不允许插入重复值printSet(s1);//拷贝构造set<int>s2(s1);printSet(s2);
}int main()
{test01();return 0;
}
#include<iostream>
using namespace std;
#include<set>//set 容器 大小 和 交换void printSet(set<int>&s)
{for (set<int>::iterator it=s.begin();it!=s.end();it++){cout << *it<<" ";}cout << endl;
}void test01()
{set<int>s1;//插入数据 只有insert方式s1.insert(20);s1.insert(50);s1.insert(10);s1.insert(40);s1.insert(40);s1.insert(20);//插入自动排序//set 容器不允许插入重复值if (s1.empty()){cout << "为空!!!" << endl;}else {cout << "容器大小:" << s1.size() << endl;}printSet(s1);//拷贝构造set<int>s2(s1);printSet(s2);
}void test02()
{set<int>s1;//插入数据 只有insert方式s1.insert(20);s1.insert(50);s1.insert(10);s1.insert(40);s1.insert(40);s1.insert(20);set<int>s2;s2.insert(200);s2.insert(100);s2.insert(300);s2.insert(100);cout << "交换之前:" << endl;printSet(s1);printSet(s2);cout << "交换后:" << endl;s1.swap(s2);printSet(s1);printSet(s2);
}int main()
{test01();test02();return 0;
}
#include<iostream>
using namespace std;
#include<set>//set 容器 大小 和 交换void printSet(set<int>&s)
{if (s.empty()) {cout << "为空" << endl;return;}for (set<int>::iterator it=s.begin();it!=s.end();it++){cout << *it<<" ";}cout << endl;
}void test01()
{set<int>s1;//插入数据 只有insert方式s1.insert(20);s1.insert(50);s1.insert(10);s1.insert(40);s1.insert(40);s1.insert(20);//插入自动排序//set 容器不允许插入重复值//遍历printSet(s1);//删除 s1.erase(s1.begin());printSet(s1);//删除重载版本s1.erase(30);printSet(s1);//清空s1.erase(s1.begin(), s1.end());//s1.clean();printSet(s1);}int main()
{test01();return 0;
}
#include<iostream>
using namespace std;
#include<set>//set 容器 大小 和 交换void printSet(set<int>&s)
{if (s.empty()) {cout << "为空" << endl;return;}for (set<int>::iterator it=s.begin();it!=s.end();it++){cout << *it<<" ";}cout << endl;
}void test01()
{set<int>s1;//插入数据 只有insert方式s1.insert(20);s1.insert(50);s1.insert(10);s1.insert(40);s1.insert(40);s1.insert(20);s1.insert(20);s1.insert(20);set<int>::iterator pos = s1.find(10);if (pos != s1.end()){cout << "找到元素" << *pos << endl;}else {cout << "找到元素" << *pos << endl;}int num = s1.count(20);cout << "num=" << num << endl;
}int main()
{test01();return 0;
}
// set() 和 multise
void test02()
{set<int>s;pair<set<int>::iterator, bool> ret = s.insert(10);if (ret.second) {cout << "第一次插入成功!!!" << endl;}else {cout << "第一次插入失败!!!" << endl;}ret=s.insert(10);if (ret.second) {cout << "第二次插入成功!!!" << endl;}else {cout << "第二次插入失败!!!" << endl;}multiset<int>ms;//ms.insert(10);ms.insert(10);ms.insert(10);for (multiset<int>::iterator it = ms.begin(); it != ms.end(); it++){cout << *it << " ";}cout << endl;}int main()
{test02();return 0;
}
#include<iostream>
using namespace std;
#include<set>//pair 对组的创建void test01()
{//第一种pair<string, int>p("Tom", 20);cout << "姓名:" << p.first << "年龄: " << p.second << endl;//第二种pair<string, int>p2 = make_pair("Jerry", 30);cout << "姓名:" << p2.first << "年龄: " << p2.second << endl;
}void printSet(set<int>&s)
{if (s.empty()) {cout << "为空" << endl;return;}for (set<int>::iterator it=s.begin();it!=s.end();it++){cout << *it<<" ";}cout << endl;
}
int main()
{test01();return 0;
}
#include<iostream>
using namespace std;
#include<set>//容器排序
class MyCompare
{
public:bool operator()(int v1, int v2){return v1 > v2;}
};void test01()
{set<int>s;s.insert(90);s.insert(40);s.insert(10);s.insert(50);s.insert(30);s.insert(50);s.insert(40);for (set<int>::iterator it = s.begin(); it != s.end(); it++){cout << *it << " ";}cout << endl;
}void test02()
{//指定排序规则从大到小set<int,MyCompare>s2;s2.insert(90);s2.insert(40);s2.insert(10);s2.insert(50);s2.insert(30);s2.insert(50);s2.insert(40);for (set<int,MyCompare>::iterator it = s2.begin(); it != s2.end(); it++){cout << *it << " ";}cout << endl;
}int main()
{test01();test02();return 0;
}
#include<iostream>
using namespace std;
#include<set>
#include<string>
class Person
{
public:Person(string name, int age){this->m_name = name;this->m_age = age;}string m_name;int m_age;
};class cmp
{
public:bool operator()(const Person& p1, const Person& p2){return p1.m_age>p2.m_age;}
};void test01()
{set<Person,cmp>s;Person p1("刘备", 24);Person p2("小组", 14);Person p3("九四", 74);Person p4("怄气", 84);s.insert(p1);s.insert(p2);s.insert(p3);s.insert(p4);for (set<Person,cmp>::iterator it = s.begin(); it != s.end(); it++){cout << " 姓名: " << it->m_name << " 年龄: " << it->m_age << endl;}cout << endl;
}int main()
{test01();system("pause");return 0;
}