C++容器三之集合

本文探讨了C++中的集合容器,包括set和multiset,强调了它们的排序与唯一性特性。同时介绍了映射容器map与multimap,解释了键值对的概念以及多重映射允许重复键值的特点。此外,还提到了用于初始化的initializer_list和新标准中的元组概念。
摘要由CSDN通过智能技术生成

 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值