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,"小李");

第四种

通过数组的方式插入

map3="小刘"

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

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

第一种使用\[\]

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

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

相关推荐
m0_547486664 天前
《数据结构教程》全套 PPT课件2026
数据结构
tryxr5 天前
矩阵的几种基础变换
java·数据结构·算法·矩阵
mmmmath_35 天前
LeetCode.028.找出字符串中第一个匹配项的
数据结构·算法·leetcode
All for pursuit.5 天前
【栈-4】739.每日温度
数据结构·c++·算法·leetcode
All for pursuit.5 天前
【栈-5】84.柱状图中最大的矩形
数据结构·c++·算法·leetcode
渡我白衣5 天前
HttpRequest与HttpResponse的实现
服务器·数据结构·c++·人工智能·tcp/ip·机器学习·caffe
晴天的雨.9925 天前
【C++算法】和为s的两个数
开发语言·数据结构·c++·算法
淡海水5 天前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
Logic1015 天前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
2401_839080545 天前
C++常见八股
数据结构·c++·算法