加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c++STL容器之set/multiset容器

发布时间:2020-12-16 09:06:42 所属栏目:百科 来源:网络整理
导读:1.所有元素在插入时就会被自动排序。 2.底层是二叉树的实现。 3.set中不允许有重复的元素,multiset里面允许有重复的元素。 一、构造函数 set T st; set ( const set st); 二、赋值 set operator ( set st); 三、大小和交换 size();empty();swap(); 四、插入

1.所有元素在插入时就会被自动排序。

2.底层是二叉树的实现。

3.set中不允许有重复的元素,multiset里面允许有重复的元素。

一、构造函数

set<T> st;
set(const set &st);

二、赋值

set& operator(set &st);

三、大小和交换

size();
empty();
swap();

四、插入和删除

insert(ele);
clear();
erase(pos);
erase(beg,end);
erase(ele);

五、查找和统计

?

find(key);//查找key是否存在,若存在,则返回该键元素的迭代器,若不存在,则返回set.end();
count(key);统计key的个数

?

六、对set进行排序

set默认排序是从小到大,可以利用仿函数,改变排序规则。

1.对内置数据类型进行排序

#include<iostream>
using namespace std;
#include <set>

set容器排序

class MyCompare
{
public:
    bool operator()(int v1,int v2) const
    {
        return v1 > v2;
    }
};

void test01()
{
    set<int>s1;

    s1.insert(10);
    s1.insert(40205030);

    for (int>::iterator it = s1.begin(); it != s1.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    指定排序规则为从大到小
    int,MyCompare>s2;

    s2.insert();
    s2.insert( endl;
}

int main() {

    test01();

    system("pausereturn 0;
}

输出:

?

需要注意的是vs2019重载operator()需要加const,不然会报错。?

2.对自己定义的数据类型进行排序

#include<iostream>
string>
#include <set>
set容器排序,存放自定义数据类型

 Person
{
:
    Person(string name,1)"> age)
    {
        this->m_Name = name;
        this->m_Age = age;
    }
    string m_Name;
     m_Age;
};

 comparePerson
{
const Person& p1,1)">const Person& p2) const按照年龄 降序
        return p1.m_Age > p2.m_Age;
    }

};

自定义数据类型 都会指定排序规则
    set<Person,comparePerson>s;

    创建Person对象
    Person p1(刘备",24);
    Person p2(关羽28);
    Person p3(张飞25);
    Person p4(赵云21);

    s.insert(p1);
    s.insert(p2);
    s.insert(p3);
    s.insert(p4);

    )
    {
        cout << 姓名: " << it->m_Name <<  年龄: " << it->m_Age << endl;
    }

}

;
}

输出:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读