C++ STL map容器入门 前面我们学习了pair模板类——《初识模板类pair》是为了本节学习map作准备。map作为有序关联式容器,其通过pair模板的形式存储元素,并根据key值(指pair中的first)进行自动排序,排序默认是升序,但我们也可以通过仿函数实现降序排序,值得注意的是,map的键值具有唯一性,不允许出现重复键值。接下来我们通过代码来了解如何创建map容器:#include<bits/stdc++. STL有序关联式容器 2025年10月07日 0 点赞 0 评论 238 浏览
深入学习C++ STL map容器的迭代器 和很多容器一样,map有正向迭代器begin()、end(),有反向迭代器rbegin()、rend(),还有常量迭代器cbegin()、cend()、crbegin()、crend(),(c表示const,可读不可改),这些迭代器都是双向迭代器,只能进行++或--操作,不能+5或-8随机访问。本节抓重点,主要讲map的其他迭代器。在前一节我们就总结了map常用成员函数,可跳转《初识ST库中的ma STL有序关联式容器 2025年10月07日 0 点赞 0 评论 221 浏览
C++ STL map容器如何获取值(value)? 在基本掌握map容器及其迭代器的基础下,本节将带领读者一起谈论如何获取map中的value。前面我们提到map重载了'[]'符号,能够通过'[]'添加或查看value;还有find()输入key获取指向value的迭代器;其实我们还能通过at()来获取value,count()查看value是否存在。通过代码分别展示3种方式:#include<bits/std STL有序关联式容器 2025年10月07日 0 点赞 0 评论 223 浏览
C++ STL map容器如何添加元素? 为了给map容器添加元素,我们有4种方法:1. 最简洁的方式就是通过'[]',中括号内为key,通过map[key]=value的形式为map添加元素(这里如果已存在key,则进行覆盖);2. 然后就是大家熟悉的insert(),insert()在此处既可单个插入,又能多个插入,还可以通过迭代器参数优化从指定位置寻找插入位置;3. 然后就是emplace()直接构造了,但是仅能添加 STL有序关联式容器 2025年10月08日 0 点赞 0 评论 235 浏览
C++ STL map容器中,insert()和'[]'谁的插入效率更高? 在前面《如何为STL库中的map添加元素?》我们总结了4种方式为map容器插入元素,最常用的就是insert()和'[]'了。相必读者一定很好奇到底是谁的插入效率更高,用哪一个更好。这里先不直接公布答案,先看看直观的代码测试:#include<bits/stdc++.h>//万能头#include<string>#include<map>// STL有序关联式容器 2025年10月08日 1 点赞 0 评论 218 浏览
深入学习C++ STL map容器的成员函数emplace_hint() 前面我们简单提到过emplace_hint()这个插入函数,在能够巧用迭代器的情况下就能实现map高效插入元素。emplace_hint(hint,key,val)有3各参数,第一个是位置迭代器hint,第二个是key键值,第三个是val值。它的返回值为:如果成功插入返回插入元素对应的迭代器,否则返回hint。如何巧用迭代器?大多数情况下emplace_hint()都是进行批量元素插入。比如我要插 STL有序关联式容器 2025年10月08日 0 点赞 0 评论 193 浏览
深度剖析C++ STL map容器emplace()和emplace_hint()高效插入元素的底层机制 前面我们通过实验知道单个插入emplace()效率最高,批量插入emplace_hint()效率最高,那为什么是这样呢?这里我们简单构造一个类obj,然后通过map去调用它,分别查看各个插入函数的调用情况:#include<iostream>#include<map>#include<string>using STL有序关联式容器 2025年10月08日 0 点赞 0 评论 209 浏览
C++ STL map容器如何删除元素? 学到这里,我们已经掌握map容器的基本知识了,增、改、查,但还没有学过删。本节将继续带领读者一起学习如何为map容器删除元素。erase()是删除map容器内元素的主要函数,这里通过代码简单介绍如何通过erase()删除元素:#include<iomanip>#include<iostream>#include<map>#inclu STL有序关联式容器 2025年10月08日 0 点赞 0 评论 214 浏览
C++ STL multimap容器入门 在掌握map容器的基础下,我们开始multimap容器的学习。为什么要求有map的基础呢,原因在于multimap与map容器十分“相似”,不同点在于map只允许存在唯一键,而multimap能够存储重复键,在理解map的基础上对比归纳这两个容器,能够对序列式容器有个宏观的视角,提高对容器的掌控力。如果读者没有map容器的基础,可跳转《初识模板类pair》开始map容器的学习。由于multimap STL有序关联式容器 2025年10月10日 0 点赞 0 评论 197 浏览
C++ STL set容器入门 对于SLT库中的关联式容器,我们第一个学到的容器就是map,它属于有序关联式容器且只允许唯一键值存在;当允许重复键值存在时,我们就学习了multimap。今天我们开始学习set容器,set可以被视为是特殊的map,它要求键必须等于值。所以,插入时只需要放入一个元素即可,可见“键值对”的概念被隐式转换了。set最大的特点是能够自动去重和排序,其底层是红黑树实现,时间复杂度为O(log n),相比动态 STL有序关联式容器 2025年10月10日 0 点赞 0 评论 218 浏览