C++容器---关联式容器<set>&<multiset>
来源:互联网 发布:实验楼 知乎 编辑:程序博客网 时间:2024/05/21 17:04
由于multiset和set相差不大,所以基本以set做练习;
集合(Set)是一种包含已排序(升序)对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。集合元素既充当数据,又充当关键码,以升序的顺序存储;multiset中的元素可以重复。
1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素
2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数
3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同)
模板原型:
//Key为元素(键值)类型
template
<
class
Key,
class
Compare=less<Key>,
class
Alloc=STL_DEFAULT_ALLOCATOR(Key) > class set
Comapre:实现内部排序的仿函数;
allocator:内存配置器,负责内存的分配和销毁;
构造函数:
1、set<int> s1;
2、set<int> s2(less<int>()); //以构造函数参数定义
3、set<int> ::allocator_type s1_Alloc;
s1_Alloc=s1.get_alloctor();
set<int> s3(less<int>(),s1_Alloc);
4、set<int,greater<int>> s4; //在模板中以参数形式实现;'> >'之间有空格;
成员函数:
insert()--在集合中插入元素 //返回pair(iterator,bool) iterator:迭代器指针,插入的位置;bool:是否插入成功
-----------------------------------------------------------------------------------------------------
end()--返回指向最后一个元素的迭代器
rbegin()--返回指向集合中最后一个元素的反向迭代器
rend()--返回指向集合中第一个元素的反向迭代器
-----------------------------------------------------------------------------------------------------
empty()--如果集合为空,返回true
size()--集合中元素的数目
max_size()--返回集合能容纳的元素的最大限值
-----------------------------------------------------------------------------------------------------
erase()--删除集合中的元素
clear()--清除所有元素
-----------------------------------------------------------------------------------------------------
find()--返回一个指向被查找到元素的迭代器
count()--返回某个值元素的个数
get_allocator()--返回集合的分配器
swap()--交换两个集合变量 //a.swap(b);
equal_range()--返回集合中与给定值相等的上下限的两个迭代器
upper_bound()--返回大于某个值元素的迭代器
---------------------------------------------------------------
key_comp()--返回一个用于元素键值比较的函数 //返回kep_compare类型
value_comp()--返回一个用于比较元素实值的函数
eg:
set<int,less<int> >::key_compare kcl = s1.key_comp();
-----------------------------------------------------------------------------------------------------
- 关联式容器set/multiset
- STL容器-关联式容器set/multiset
- C++容器---关联式容器<set>&<multiset>
- C++关联式容器set,multiset
- C++:关联容器(set,multiset,map,multimap)
- C++/STL关联容器-集合-multiset&set的用法
- C++:关联容器(pair、map、set、multiset)
- c++set和multiset容器
- 三 关联式容器(一)set和multiset
- 5 关联式容器-set map multiset multimap
- 【深度探索STL】关联式容器set和multiset
- Chapter 5: 关联式容器之 set 和 multiset
- 关联容器之set与multiset
- (关联容器)set 和 multiset
- 关联容器(map、set、multimap、multiset)
- 关联容器 map/set/multimap/multiset
- 关联容器(set & multiset & Map& multimap)
- C++::STL::容器类::set/multiset
- 帝国首页列表页实现点赞的方法
- 一些简单的git命令及操作
- log4j配置介绍
- MouseEvent的click事件的currentTarget和target属性的区别
- 薪水支付案例(2)
- C++容器---关联式容器<set>&<multiset>
- 算法笔记
- [ JavaScript ] require中 exports 和 module.exports 的区别
- redis单机及集群部署
- sjfx
- java利用poi和jfinal框架将excel导入数据库
- 重磅!Android Studio 3.0 正式发布,支持 Kotlin 语言
- FPGA设计中的复位问题
- CString,string,char*之间的转换(转)