1.集合 头文件 set
单集合拥有数据的自排序 和数据的唯一性
int main()
{
set<int> sdata; //默认排序准则从小太大
set<int, less<int>> sdata2;//创建拥有排序准则的容器对象
set<int, greater<int>> sdata3;//创建从大到小排序准则集合容器
cout<<sdata.size()<<endl;
sdata.insert(9);
sdata.insert(3);
sdata.insert(3);//单集合具有数据的唯一性,插入重复的数据会自动跳过
sdata.insert(4);
cout << sdata.size() << endl;
for (int v:sdata)
{
cout << v << "\t";
//实际上 sdata元素个数只有2个
//由于数据具有自动排序功能 实际集合容器中 数据的排序为 3 ,4,9
}
cout << endl;
for ( set<int>::iterator itr = sdata.begin();itr!=sdata.end(); itr++)
{
cout << *itr << endl;//使用迭代器的方式访问
}
return 0;
}
单集合容器操作自定义类型数据
class Fox
{
public:
Fox(string name, int age, int num) :name(name), age(age), num(num) {}
void coutTodata()
{
cout << name << " " << age << " " << num << " " << endl;
}//提供方法
bool operator<(const Fox&object1) const
{
if (this->age<object1.age)
{
return true;
}
else
{
return false;
}
}
protected:
string name;
int age;
int num;
};
void TestMydata()
{
set <Fox, less<Fox>> sfoxdata;//这里如果使用自定类型排序准则,必须在类中重载相关的运算符
sfoxdata.insert(Fox("狐狸1",18,7));
sfoxdata.insert(Fox("狐狸2",17, 27));
sfoxdata.insert(Fox("狐狸3",11, 17));
sfoxdata.insert(Fox