#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <algorithm>
#include <deque>
#include <stack>
#include <queue>
#include <list>
#include <set>
using namespace std;
void printSet(const set<int> &s)
{
for (set<int>::const_iterator it = s.begin(); it != s.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
set<int> s1;
s1.insert(10);
s1.insert(30);
s1.insert(50);
s1.insert(20);
s1.insert(40);
s1.erase(s1.begin());
s1.erase(50);
printSet(s1);
int num=s1.count(30);
cout << "num = " << num << endl;
if(s1.empty())
{
cout << "s1 is empty" << endl;
}
else
{
cout << "s1 is not empty, size = " << s1.size() << endl;
}
}
void test02()
{
set<int> s1;
pair<set<int>::iterator, bool> ret = s1.insert(10);
if(ret.second)
{
cout << "insert " << *(ret.first) << " success" << endl;
}
else
{
cout << "insert " << *(ret.first) << " failed" << endl;
}
ret = s1.insert(10);
if(ret.second)
{
cout << "insert " << *(ret.first) << " success" << endl;
}
else
{
cout << "insert " << *(ret.first) << " failed" << endl;
}
multiset<int> ms;
ms.insert(10);
ms.insert(10);
for(multiset<int>::iterator it = ms.begin(); it != ms.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test03()
{
pair<string,int> p("hello",1);
cout << p.first << " " << p.second << endl;
pair<string,int> p2(p);
cout << p2.first << " " << p2.second << endl;
}
class MyCompare
{
public:
bool operator()(int v1,int v2)const
{
return v1>v2;
}
};
void test05()
{
set<int,MyCompare> s5;
s5.insert(10);
s5.insert(20);
s5.insert(30);
for(set<int,MyCompare>::iterator it = s5.begin(); it != s5.end(); it++)
{
cout << *it << " ";
}
}
class Person
{
public:
Person(string name,int age)
{
this->m_Name = name;
this->m_Age = age;
}
string m_Name;
int m_Age;
};
class PersonCompare
{
public:
bool operator()(const Person &p1, const Person &p2)const
{
return p1.m_Age > p2.m_Age;
}
};
void test06()
{
set<Person,PersonCompare> s1;
Person p1("aaa",10);
Person p2("bbb",20);
Person p3("ccc",30);
s1.insert(p1);
s1.insert(p2);
s1.insert(p3);
for(set<Person>::iterator it = s1.begin(); it != s1.end(); it++)
{
cout << "name = " << it->m_Name << " age = " << it->m_Age << endl;
}
}
int main()
{
//test01();
//test02();
//test03();
//test05();
test06();
return 0;
system("pause");
}