之前介绍过标准库中的顺序容器,顺序容器是元素在内存中按照一定顺序进行排列的,都是按线性结构进行排列。除了顺序容器外,c++中还有关联容器。与顺序容器不同的是,关联容器中元素是按照关键字来保存和访问的。...与之相对的顺序容器是按它们在容器中的位置来顺序的保存和访问的。 关联容器支持高效的查找和访问。两个主要的关联容器类型是map和set。...、unordered_multiset 关联容器概述 关联容器不支持顺序容器中的位置相关操作,例如 push_back、push_front。...关联容器的操作 关联容器定义了额外的类型别名 key_type: 此容器类型的关键字类型 mapped_type: 每个关键字关联的类型:只适用与map value_type: 对于set,与key_value...关键字是const这一特性意味着不能将关联容器传递给修改或者重排容器元素的算法。关联容器可以使用只读取元素的算法。但是很多这类算法都要搜索序列。
本文链接:https://blog.csdn.net/Enterprise_/article/details/102943141 关联容器和顺序容器的不同 关联容器和顺序容器的根本不同之处在于,关联容器中的元素是按关键字来保存和访问的...unordered_set unordered_multimap unordered_multiset 关联容器不支持和位置相关的操作,因为是按关键字顺序存储的,关联容器的迭代器都是双向的。...对于有序关联容器中的关键字类型要求 对与有序关联容器而言,关键字类型必须定义元素比较的方法(这一点尤其重要),默认时,使用关键字类型的 关联容器和算法 实际使用算法时,关联容器只能是一个源序列或者目的序列。...删除元素 关联容器有三个版本的erase操作,分别接受一个关键字,一个迭代器和一对迭代器。
第 11 章 关联容器 标签: C++Primer 学习记录 关联容器 ---- 第 11 章 关联容器 11.1 使用关联容器 11.2 关联容器概述 11.3 关联容器操作 11.4 无序容器 -...--- 11.1 使用关联容器 标准库中定义了 8个关联容器,这些容器的不同体现在三个维度上。...关联容器定义了一些额外的类型别名。...关键字是 const的,这一特性使得不能将需要修改或重排容器元素的算法传递给关联容器。...关联容器可用于只读元素的算法,但是这类算法通常都要搜索序列,而对于关联容器,使用自定义的查找算法(基于二分查找)会比泛型算法(逐一比较)快得多。
容器hash_set是以hash table为底层机制的,差点儿所有的操作都是转调用hash table提供的接口。
一.容器 在C++中容器大致可以分为两种,分别是:序列式容器和关联式容器。...序列式容器:vector,list,deque,forward_lsit都是序列式容器,因为它们的底层都是线性序列的数据结构,存放的是元素本身。...关联式容器:虽然也是用来存储数据的,但是关联式容器中存放的并不是元素本身,而是这样的键值对,这样的容器在数据检索的时候效率会更高(插入删除不需要挪动数据,只需要更改指针指向,结构平衡时查找效率为...关联式容器也有两类,一类是map,multimap和set,multiset这种底层为红黑树的容器,另一类是哈希结构。...),表面上set只有一个参数T,但其实set内部存放的是这样的键值对 set的大部分成员函数和STL中其他的容器类似,所以就不一一介绍,这里只介绍具有set特性的成员函数
(按着菜鸟教程走下来的时候pull的) 于是请教前辈,是按方法①去操作还是php,nginx各开一个容器再去连接方法②,得到了方法②的回复,于是开始了漫长的道路。 单容器易于分发、维护。...因为它们是独立的,所有的东西都运行在同一个容器中,这点就像是一个虚拟机。但这也意味着,当你要升级其中的某样东西(比如PHP新版本)的时候,需要重新构建整个容器。...多容器可以在添加组件时提供更好的模块化。因为每个容器包含了堆栈的一部分:Web、PHP、MySQL等,这样可以单独扩展每个服务或者添加服务,并且不需要重建所有的东西。...,也就是让容器可以共享这个目录里的文件。...坑:如果没有把配置文件挂载出来,会出现配置文件出错,然后容器就无法start了,也无法进入修改,只能删除重新建立一个容器。
https://blog.csdn.net/haluoluo211/article/details/80877064 关联式容器分为set(集合)和map(映射)两大类,以及这两大类衍生体multiset...这些容器的底层机制均以RB-tree(红黑树)完成。RB-tree是一个独立的容器,并不开放给外界使用。...此外SGI STL还提供了一个不再标准规格之列的关联式容器:hash table(散列表),以及以此hash table为底层机制而完成的hash_set(散列集合),hash_map(散列映射表),hash_multiset...hash table(散列表)及其衍生容器相当重要,它们未被纳入C++标准的原因是,提案太迟了。...一般而言,关联式容器(map, multimap)内部结构是一个 balanced binary tree(平衡二叉树),以便获得良好的搜寻效率,其中包括:AVL-tree(AVL树),RB-tree(
---- 关联容器:对象的位置取决于和它关联的键的值。键可以是基本类型,也可以是类类型。...map 类模板:定义了一个保存 T 类型对象的 map,每个 T 类型的对象都有一个关联的 K 类型的键。...容器内对象的位置是通过比较键决定的,唯一的要求是键必须可以用 less 比或用自己指定的另一个函数对象来替代。...personnel {people}; std::map personnel {std::begin(people),std::end(people)}; //用另一个容器的元素子集来创建容器...2.4外部源中的一段元素插入 map 这些元素不必来自另一个 map 容器,但必须和被插入容器中的元素是同类型。
if (ret.second == false) //表明没有插入数据,map中已经存在着相应的单词 9 ++wordCount[word]; 10 } 7、与map容器不一样...,set容器的每个键对应的元素是唯一的,不可重复。...= nCount; ++ si, ++ it) 10 cout second << endl; 第二种策略:采用面向迭代器的解决方案: 采用有关关联迭代器的操作:lower_bound...= pos.second) { 5 //pos是一对迭代器,pos.first是第一个迭代器所关联的实例,而pos.first->second是该实例所对应的值 6 cout first second << endl; 7 ++ pos.first; 8 } 9、容器的综合应用:文本查询程序 要求:给定一个文本文件
本文续:STL之关联式容器map(一) 3构造元素 emplace() 可以在适当的位置直接构造新元素,从而避免复制和移动操作。 当容器中现有元素的键与这个元素的键不同时,才会构造这个元素。...元素默认的构造函数会用键和键所关联的对象生成一个新元素,如果键关联的对象是基本数据类型,它的值为 0。...关联对象的值是 0,并会返回这个值。...不能在 map 容器中保存重复的键,但是可以将键关联到封装了多个名言的对象上。...这个参数必须是容器中的有效迭代器,不能是结束迭代器。如果迭代器参数指向的是容器的最后一个元素,那么会返回结束迭代器。
正文开始 1. unordered系列关联式容器 在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 log_2 N ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时...最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同,本文中只对...1.1 unordered_map unordered_map是存储键值对的关联式容器,其允许通过keys快速的索引到与 其对应的value。...在unordered_map中,键值通常用于惟一地标识元素,而映射值是一个对象,其内容与此 键关联。键和映射值的类型可能不同。...unordered_map容器通过key访问单个元素要比map快,但它通常在遍历元素子集的范围迭 代方面效率较低。
本文 445字,需要 1.11 分钟 本文主要记录如何在 VSCode 关联 Laradock 容器,配置和使用容器的 PHP 环境和一些插件,如:phpcs。...从容器中打开代码 首先必须保证我们已经启动我们的容器了: 然后启动 VSCode,使用命令 F1,选择 Remote Explorer: Focus on Containers View: 选择我们的...workspace 容器: 这时候会重新打开新的页面让你选择代码所在的路径,OK 后即可打开代码,和从本地路径选择效果一样: 安装 phpcs 插件 因为本地 Laradock 配置多个源代码项目,所以全局安装...squizlabs/php_codesniffer,进入 workspace 容器: // 进入容器 dc exec workspace bash // 安装插件 composer global require...不开发时,可以直接关闭 Docker 或者容器,让电脑处于「办公」状态。「开发」与「行政办公」无缝切换。
本章我们将主要学习关联容器,主要包括 QMap ,QSet和 QHash,它们提供了键值对存储和检索的功能,允许通过键来快速查找值。...1.1 QMap QMap 是 Qt 中的有序关联容器,用于存储键值对,并按键的升序进行排序。...1.1.3 应用案例 正如如下代码所示,我们提供了QMap字典类型的关联数组,该数组中一个键映射对应一个值,QMap容器是按照顺序存储的,如果项目中不在意顺序可以使用QHash...<< ref.at(x).toStdString().data() << std::endl; } return a.exec(); } 1.2 QHash QHash 是一个无序的关联容器...1.3 QSet QSet 是 Qt 中的无序关联容器,类似于 C++ 标准库的 std::unordered_set。它主要用于存储唯一值,而不关心元素的顺序。
1.set 集合具有共同特征的事物,可以是由两个迭代器定义的范围内的一系列对象,也可以是一种有特殊特征的容器类型。...less,因此容器中的元素会升序排列。...set 容器,但它可以保存重复的元素。...如果没有元素匹配的话,pair 的第一个成员是容器的结束迭代器;在这种情况下,第二个成员是比参数大的第一个元素,如果都没有的话,它也是容器的结束迭代器。...//通过调用容器的成员函数 count(),可以获取和它的参数 iter 所指向元素相等的元素的个数。
文章目录 一、std::map 容器 1、std::map 容器简介 2、std::map 容器排序规则 3、std::map 容器底层实现 二、代码示例 - std::map 容器 1、代码示例 2、...执行结果 一、std::map 容器 1、std::map 容器简介 std::map 容器 是 C++ 语言 标准模板库 ( STL , Standard Template Library ) 提供的...的一个 " 关联容器 " ; std::map 关联容器 , 提供 一对一数据处理能力 , 容器中的元素自动按键 Key 排序 , 键 Key 和 值 Value 是 一一对应 的 ; 第一个 键 Key...键 Key 对 元素 进行自动排序 的 ; 每个键的值在 std::map 容器中都是 唯一的 , 键值不允许重复 ; 在 std::map 容器 中 , 可以 根据 键 Key 快速检索 容器中的...::map 容器 底层使用 红黑树 实现 , 这是 平衡二叉树 的变体 数据结构 ; std::map 容器 与 std::set 容器 底层实现相同 , 区别是 map 容器中存储的是键值对 , set
目录 一丶关联容器简介.set/multiset 二丶演示代码. 一丶关联容器简介.set/multiset 我们的序列容器,底层都是线性表构成的. 比如 vector list deque....关联容器底层就是红黑树. 以set集合为例. set内部元素根据其值自动排序.每个元素的值只允许出现一次.不能重复. multiset 跟set一样.只不过值可以重复. 二丶演示代码....<< endl; cout << "--------------------------" << endl; getchar(); system("pause"); } set相比于序列容器
这一章介绍了标准库中的关联容器们,主要是11.3的对有序关联容器操作的介绍。这章比较短,也只是比较工具性的东西,快速浏览即可。下一章就是C++的重要运用:动态内存管理。...11.1 使用关联容器 关联容器和顺序容器有根本的不同,关联容器中的元素是按照关键保存和访问的,而不是顺序容器中的按照容器位置来保存和访问 标准库中最主要的两个关联容器就是map和set。...和顺序容器一样,关联容器也是模板类型,因此为了定义关联容器我们也需要指定关键字和值的类型,按照:map,set的格式 关联容器同样可以得到对应元素的迭代器,但是使用上稍有差别...当使用makepair时,pair的类型是编译器推断的 11.3 关联容器操作 关联容器有一组表示出容器类型的成员如下,我们用域运算符来得到容器相应的类型成员。...find效率也会很低 实际应用中我们使用容器自带的一些算法进行处理,例如关联容器自带的find 我们可以用成员函数insert或emplace来向关联容器插入元素,使用方法和顺序容器类似。
简介 标准库提供8个关联容器: map:关联数组 set:只保存关键字 multimap:关键字可重复出现的map multiset:关键字可重复出现的set unordered_map:...= p2:当first和second分别相等时,两个pair相等 关联容器操作 C++中用下面这些类型表示容器关键字和值的类型: key_type:关键字类型 mapped_type:每个关键字关联的类型...关联容器迭代器 当解引用一个关联容器迭代器时,我们会得到一个类型为容器的value_type的值: 对于map是一个pair,我们不能改变first成员的const关键字 虽然set同时定义了iterator...,一方面是因为关键字是const这一特性意味着我们不能将关联容器传递给修改或者重排容器元素的算法;另一方面虽然关联容器可用于只读取元素的算法,但是这类算法很多都需要搜索序列,由于关联容器不支持通过关键字进行快速查找...比如使用copy算法将元素从一个关联容器拷贝到另一个序列,类似的可以用inserter将一个插入器绑定到一个关联容器从而将关联容器作为一个目的位置来调用另一个算法。 2.
1. map的介绍 1. map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元 素。 2....在map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值key关联的 内容。...4. map中通过键值访问单个元素的速度通常比unordered_map容器慢,但map允许根据顺序 对元素进行直接迭代(即对map中的元素进行迭代时,可以得到一个有序的序列)。
作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。...通常情况下,map 容器中存储的各个键值对都选用 string 字符串作为键的类型。 与此同时,在使用 map 容器存储多个键值对时,该容器会自动根据各键值对的键的大小,按照既定的规则进行排序。...创建C++ map容器的几种方法 map 容器的模板类中包含多种构造函数,因此创建 map 容器的方式也有多种,下面就几种常用的创建 map 容器的方法,做一一讲解。...通过此方式创建出的 myMap 容器,初始状态下是空的,即没有存储任何键值对。鉴于空 map 容器可以根据需要随时添加新的键值对,因此创建空 map 容器是比较常用的。...有关 map 容器迭代器,后续章节会做详细讲解。 5) 当然,在以上几种创建 map 容器的基础上,我们都可以手动修改 map 容器的排序规则。
领取专属 10元无门槛券
手把手带您无忧上云