
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容器 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)