c++STL容器之setmultiset容器

c++STL容器之setmultiset容器,第1张

概述1.所有元素在插入时就会被自动排序。 2.底层是二叉树的实现。 3.set中不允许有重复的元素,multiset里面允许有重复的元素。 一、构造函数 set<T> st; set(cons

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

输出:

总结

以上是内存溢出为你收集整理的c++STL容器之set/multiset容器 全部内容,希望文章能够帮你解决c++STL容器之set/multiset容器 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1159623.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存