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;
}

 

posted @ 2021-09-09 16:11  Creature_lurk  阅读(26)  评论(0编辑  收藏  举报