首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++map & set

(1)map 的介绍 我们先看一下 map 的文档介绍:map 文档介绍 ....map 中通过键值访问单个元素的速度通常比 unordered_map 容器慢,但 map 允许根据顺序对元素进行直接迭代(即对map中的元素进行迭代时,可以得到一个有序的序列)。...map 支持下标访问符,即在 [] 中放入 key,就可以找到与 key 对应的 value。 map 通常被实现为二叉搜索树(更准确的说:平衡二叉搜索树(红黑树))。...总结: map 中的的元素是键值对 map 中的 key 是唯一的,并且不能修改 默认按照小于的方式对 key 进行比较 map 中的元素如果用迭代器去遍历,可以得到一个有序的序列 map 的底层为平衡搜索树...使用时与map包含的头文件相同: 四、map 和 set 的练习 1.

12210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++map 和 set

    的介绍 2、map 的使用 五、multimap 一、关联式容器与键值对 1、关联式容器 在C++初阶的时候,我们已经接触了 STL 中的部分容器并进行了模拟实现,比如 vector、list、stack...first(T1()), second(T2()) //默认构造 {} pair(const T1& a, const T2& b) : first(a), second(b) {} }; 可以看到,C+...make_pair 函数 由于 pair 是类模板,所以我们通常是以 显式实例化 + 匿名对象 的方式来进行使用,但是由于显式实例化比较麻烦,所以 C++ 还提供了 make_pair 函数,其定义如下...的使用还有不清楚的地方,建议查阅 map 使用文档:map - C++ Reference (cplusplus.com) ---- 五、multimap 和 set 与 multiset 的关系一样...如果大家对 multimap的使用还有不清楚的地方,建议查阅 multimap文档:multimap - C++ Reference (cplusplus.com) ----

    60100

    map 学习(下)——C++ 中的 hash_map, unordered_map

    map 学习(下)——C++ 中的 hash_map, unordered_map 接上篇《map 学习(一)——C++map 的使用》。...一、hash_map 参考《C++ STL中哈希表 hash_map介绍》即可。博主写的很详细。 注: hash_map 不是标准的。...网上原因好像说是 STL 加入标准C++之时,hash_map系列当时还没有完全实现,所以很多平台上虽然安装了 g++ 编译器,但不一定有 hash_map 的实现。...所以如果有平台移植的内容,尽量少用 hash_map。 二、unordered_map 以下内容翻译自《unordered_map - C++ Reference》。 1....三、map, hash_map, unordered_map 的区别 参考网址: 《c++map与unordered_map的区别》 《C++map和hash_map的区别》 1.

    13.4K91

    C++map和set

    map的介绍 map是关联式容器,他按照特定的次序(按照key来比较)存储由键值key和值value组合而成的键值对元素; 在map中,键值key可以唯一的标识元素,值value中存储与键值key关联的内容...key来进行比较排序; map中通过键值访问单个元素的效率通常比unordered_map的效率低,但是map允许根据顺序对元素进行直接迭代(对map的元素进行迭代,可以得到一个有序的序列); map支持下标访问...map的构造 map的迭代器 map的容量 map的元素访问 map的操作 大部分操作与set类似,参考set的使用即可。...map的应用举例 #include #include int main() { map m; m.insert(make_pair("peach...本文作者目前也是正在学习C++相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。

    74830

    c++ map和set_STLset和map的区别

    C++map和set的介绍及使用 零、前言 一、关联式容器 二、键值对 三、C++中的set 1、set的介绍 2、set的使用 四、C++中的multiset 五、C++中的map 1、map的介绍...2、map的使用 六、C++中的multimap 零、前言 本章主要讲解C++中的一个关联式容器map和set的介绍及其使用 一、关联式容器 容器分类: 序列式容器:初阶阶段中学习过STL中的部分容器...first(T1()), second(T2()) { } pair(const T1& a, const T2& b): first(a), second(b) { } }; 三、C+...) << endl; set.erase(set.find(8));//删除 for (auto& e : set) cout << e << " "; cout << endl; } 结果: 四、C+.../遍历 cout << e.first << ":" << e.second << endl; } 结果: 六、C++中的multimap multimap的介绍: multimap容器与map容器的底层实现以及成员函数的接口都是基本一致

    42020

    C++ map内部算法1

    相比而言,map 容器提供了一种更有效的存储和访问数据的方法。 map 容器是关联容器的一种。在关联容器中,对象的位置取决于和它关联的键的值。键可以是基本类型,也可以是类类型。...map 类模板定义在 map 文件头中,它定义了一个保存 T 类型对象的 map,每个 T 类型的对象都有一个关联的 K 类型的键。容器内对象的位置是通过比较键决定的。...可以用适当的键值从 map 容器中检索对象。图 1 展示了一个用名称作为键的 map 容器,对象是整数值,用来表示年龄。 ?...不要因为 map 使用 less 对元素排序就被误导,这些元素并没有被组织成一个简单的有序序列,STL map 容器对元素的组织方式并没有具体要求,但元素一般都会保存在一个平衡二叉树中。...图 2 展示了图 1 所表示的 map 容器可能的平衡二叉树。 ? 图 2 map 容器的内部组织图 图 2 所示的树有 3 层,所以从根节点开始,找到任意的元素最多需要 3 步。

    1.1K10

    C++ map用法总结(整理)

    1,map简介 map是STL的一个关联容器,它提供一对一的hash。...3,使用map 使用map得包含map类所在的头文件 #include //注意,STL头文件没有扩展名.h map对象是模板类,需要关键字和存储对象两个模板参数: std:map<int...为了使用方便,可以对模板类进行一下类型定义, typedef map UDT_MAP_INT_CSTRING; UDT_MAP_INT_CSTRING enumMap; 4,map...的构造函数 map共提供了6个构造函数,这块涉及到内存分配器这些东西,略过不表,在下面我们将接触到一些map的构造方法,这里要说下的就是,我们通常用如下方法构造一个mapmap<int, string...,我们怎么知道当前已经插入了多少数据呢,可以用size函数,用法如下: int nSize = mapStudent.size(); 9,map的基本操作函数: C++ maps是一种关联式容器

    4.3K20

    C++map和set的封装

    一、前情回顾 set 参数只有 key,但是map除了key还有value。...和Set: 对于map:传key,对于set:传pair map的结构简化源码: set的结构简化源码: 为了让我们的红黑树能够识别set与map我们增加一个模板参数T: template<class...,对于set和map的区别:我们只要通过第二个模板参数就能进行区分,那是不是第一个模板参数就没有意义了呢?...**红黑树的节点**:set容器:K和T都是键值Key; map容器:K是键值Key,T由Key和Value构成的键值对;但是底层红黑树并不知道上层容器到底是map还是set,因此红黑树的结点当中直接存储...map还是set容器,当需要进行两个结点键值的比较时,底层红黑树传入的仿函数来获取键值Key,进行两个结点键值的比较:这个时候我们就需要仿函数了,如果是set那就是用于返回T当中的键值Key,如果是map

    15020

    C++map和set的封装

    在STL中的map与set 在STL中,map和set都是使用的红黑树 ---- map与set在STL中实现是一样的 对于value_type,map的第二个模板参数是pair,而set的第二个模板参数是...key 这样写是为了map和set使用同一颗红黑树去复用map和set ---- set -> rb_tree map - > rb_tree<K,pair...pair 虽然能够比较,但是不符合预期,所以要自己实现一个仿函数 ---- 我们要把key取出来,但是在红黑树中并不知道调用的是 set 还是map,无法知道T代表什么 但是在使用set或者map内部是知道的...,所以 分别在map和set内部各自创建一个内部类,其中都写一个operator() ---- 在函数模板中添加一个参数,即可找到对应map/set的key值 ---- 在红黑树内部,使用类实例化一个对象...kot,通过kot去调用map/set 中相同的operator() ,取出对应的key值 迭代器 set/map的迭代器是红黑树内部的迭代器 ---- ---- ---- 第二个模板参数Ref

    16730

    C++map和set的封装

    关于红黑树的模拟实现,大家不清楚的先去看看博主的博客再来看这篇文章,因为set和map的封装底层都是利用用的红黑树。...我们会发现其实map和set的底层都是用的红黑树去封装的 但是你可能会有这样的疑惑,map是kv模型,set是k模型,那难道stl底层封装了两颗红黑树么??...其实并不是的,创建stl的大佬们为了增加代码的复用性,想方设法地想让map和set同时复用一颗红黑树。而解决方法就是通过控制模版参数来区分map和set。...既然底层是套的红黑树的壳子,我们就要来研究库里面的红黑树究竟通过了什么方法来让map和set都能够复用这份代码。...三、map的模拟实现 3.1 insert的改装 在stl中 insert的返回值是pair 一开始我不太能理解为什么要这么设计。

    9410

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券