STL关联式容器set,multiset,pair,map

set容器是一个集合容器。包含元素是唯一的。集合元素按照一点顺序排列,元素插入过程是顺序插入,所有不能插入指定位置。

set采用红黑树变体的数据结构实现。红黑树属于平衡二叉树。再插入和删除上比vector快。

set不能直接存取元素(不能用at.()和[])

multiset和set大致相同,但是set支持唯一键值,每个元素只能出现一遍。而multiset可以出现多次。(会自动去重)

不可以直接修改set或multiset容器中的元素值,因为该类容器是自动排序的。如果希望修改一个元素值只能先删除后插入新的元素值

构造与其他容器没有什么区别。

set.insert(elem)只用插入元素就可以了会自动排序

同样有

set.begin

set.end

set.rbegin

set.rend

这些常见的迭代器

set的内部的默认排序是升序排列的

set.swap();

删除如下

set.clear()

set.erase(pos)

set.erase(beg,end)

set.erase(elem)如果没有就会返回0,有就会删除并且返回1

set不支持反向迭代器对元素进行删除

通过迭代器删除以后,迭代器会重新指向set容器中的第一个元素

set容器的元素排序

set.<int,less<int>> s1;升序排序(不输就默认)

set<int,greater<int>> s2;降序排序

less<>和geater<>都是对象

可以通过自己写对象来更改排序方式

接下来是set的查找

set.find(elem)返回指向elem的迭代器

set.count(elem)查找数值为elem的迭代器,set只有0或1.multiset可能会更多

set.lower_bound(elem)找到第一个>=elem元素的迭代器器

set.higher_bound(elem)找到第一个>elem元素的迭代器

set.equal_range(elem)

找一个与elem相等的上下限的两个迭代器(上闭下开)

例如1,3,5,7,9

elem=5,那么就会返回5和7元素的迭代器

而返回的则用pair进行存放

pair可以将2个值视为一个单元

pair<t1,t1>两个值的类型可以不一样

pair.first是第一个成员变量的类型

pair.second是第二个成员变量的类型

pair<set<int>::iterator,set<int>::iterator>=s1.equal_range(elem)

类似与这样使用

如果elem不存在,则根据编译器的不同会出现不同的结果

map容器

map不允许容器中有重复的key值元素 multimap允许容器中有重复的key值元素

map<t1,t2>

multiple<t1,t2>

如map<int,char> mapA;

第一种插入方式

map.insert(pair<int,string>(3,"小张");)

第二种插入元素,返回pair

map.insert(pair(3,"小张"))

直接插pair

第三种通过value_type

map.insert(map<int,string>)::value_type(1,"小李");

第四种

通过数组的方式插入

map[3]="小刘"

但是这种会先去删除已有的对象。而前面的方法不会。

map容器对象获取键对应的值

第一种使用[]

第二种使用find()Hanshu1.成功返回对应的迭代器,失败返回end()的迭代器

第三章使用at()函数,如果键值不存在就会抛出out_of_range异常

相关推荐
CQ_07122 小时前
自学力扣:最长连续序列
数据结构·算法·leetcode
弥彦_2 小时前
cf1925B&C
数据结构·算法
好易学·数据结构11 小时前
可视化图解算法56:岛屿数量
数据结构·算法·leetcode·力扣·回溯·牛客网
Ashlee_code17 小时前
裂变时刻:全球关税重构下的券商交易系统跃迁路线图(2025-2027)
java·大数据·数据结构·python·云原生·区块链·perl
闻缺陷则喜何志丹18 小时前
【带权的并集查找】 P9235 [蓝桥杯 2023 省 A] 网络稳定性|省选-
数据结构·c++·蓝桥杯·洛谷·并集查找
jie*18 小时前
python(one day)——春水碧于天,画船听雨眠。
开发语言·数据结构·python·算法·线性回归
草莓熊Lotso19 小时前
【LeetCode刷题指南】--数组串联,合并两个有序数组,删除有序数组中的重复项
c语言·数据结构·其他·刷题
weixin_4196583120 小时前
数据结构之B-树
java·数据结构·b树
H_HX_xL_L20 小时前
数据结构的算法分析与线性表<1>
数据结构·算法
overFitBrain20 小时前
数据结构-2(链表)
数据结构