概述
setmultiset容器
- 概念
- 构造和赋值
- 大小和交换
- 插入和删除
- 查找和统计
- 排序
- pair队组
概念
- 集合,插入数据的同时自动排好顺序,也叫关联容器。底层结构是二叉树实现。
- set和multiset区别:
set不允许容器中有重复的元素。set插入数据的同时会返回插入结果ret=s.insert(10);
,ret是一个pair队组,第一个值表示插入的迭代器,第二个值是bool类型表示插入是否成功ret.second
。
multisetmultiset不会检测数据,只返回迭代器不判断,因此允许容器中有重复的元素。
构造和赋值
- 构造:
set<T> st;
//默认构造函数:set<int>s3;
set(const set &st);
//拷贝构造函数set<int>s2(s1);
- 赋值:
set& operator=(const set &st);
//重载等号操作符s3 = s2;
- 插入数据:
s1.insert(10);
- 遍历:
使用迭代器for (set<int>::iterator it = s.begin(); it != s.end(); it++){ cout << *it << " "; }
大小和交换
无法重新指定大小
size();
//返回容器中元素的数目
empty();
//判断容器是否为空
swap(st);
//交换两个集合容器
插入和删除
insert(elem);
//在容器中插入元素。
clear();
//清除所有元素
erase(pos);
//删除pos迭代器所指的元素,返回下一个元素的迭代器。
erase(beg, end);
//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
erase(elem);
//删除容器中值为elem的元素。
查找和统计
find(key);
//查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end()
;
count(key);
//统计key的元素个数,set不允许重复,结果只能为0或1
排序
set容器在插入时默认排序规则为从小到大,利用仿函数可改变排序规则。插入时就改变。
- set容器存放的是自定义的数据类型
class MyCompare { public: bool operator()(int v1, int v2) { return v1 > v2; } }; //定义时,第二个参数类型为仿函数类型。 set<int,MyCompare> s2; s2.insert(10); //在迭代的时候类型也需要变为 for (set<int>::iterator it = s1.begin(); it != s1.end(); it++) { }
- set存放自定义数据类型
class comparePerson{ public: bool operator()(const Person& p1, const Person &p2){ //按照年龄进行排序 降序 return p1.m_Age > p2.m_Age; } }; //其他一样 Person是自定义的类型 set<Person, comparePerson> s; for (set<Person, comparePerson>::iterator it = s.begin(); it != s.end(); it++){ }
pair队组
- pair队组可以用来描述成对出现的数据,利用对组可以返回两个数据
- 创建
pair<type, type> p ( value1, value2 );
//默认构造 value1 value2赋初值
pair<type, type> p = make_pair( value1, value2 );
- 访问
p.first
和p.second
最后
以上就是儒雅花瓣为你收集整理的C++中set容器的基本使用----在B站听黑马程序员c++课程的记录的全部内容,希望文章能够帮你解决C++中set容器的基本使用----在B站听黑马程序员c++课程的记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复