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

关联容器

之前介绍过标准库中的顺序容器,顺序容器是元素在内存中按照一定顺序进行排列的,都是按线性结构进行排列。除了顺序容器外,c++中还有关联容器。与顺序容器不同的是,关联容器中元素是按照关键字来保存和访问的。...与之相对的顺序容器是按它们在容器中的位置来顺序的保存和访问的。 关联容器支持高效的查找和访问。两个主要的关联容器类型是map和set。...、unordered_multiset 关联容器概述 关联容器不支持顺序容器中的位置相关操作,例如 push_back、push_front。...关联容器的操作 关联容器定义了额外的类型别名 key_type: 此容器类型的关键字类型 mapped_type: 每个关键字关联的类型:只适用与map value_type: 对于set,与key_value...关键字是const这一特性意味着不能将关联容器传递给修改或者重排容器元素的算法。关联容器可以使用只读取元素的算法。但是很多这类算法都要搜索序列。

71220

关联容器小结

本文链接:https://blog.csdn.net/Enterprise_/article/details/102943141 关联容器和顺序容器的不同 关联容器和顺序容器的根本不同之处在于,关联容器中的元素是按关键字来保存和访问的...unordered_set unordered_multimap unordered_multiset 关联容器不支持和位置相关的操作,因为是按关键字顺序存储的,关联容器的迭代器都是双向的。...对于有序关联容器中的关键字类型要求 对与有序关联容器而言,关键字类型必须定义元素比较的方法(这一点尤其重要),默认时,使用关键字类型的 关联容器和算法 实际使用算法时,关联容器只能是一个源序列或者目的序列。...删除元素 关联容器有三个版本的erase操作,分别接受一个关键字,一个迭代器和一对迭代器。

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

    关联容器set和map

    一.容器 在C++中容器大致可以分为两种,分别是:序列式容器关联容器。...序列式容器:vector,list,deque,forward_lsit都是序列式容器,因为它们的底层都是线性序列的数据结构,存放的是元素本身。...关联容器:虽然也是用来存储数据的,但是关联容器中存放的并不是元素本身,而是这样的键值对,这样的容器在数据检索的时候效率会更高(插入删除不需要挪动数据,只需要更改指针指向,结构平衡时查找效率为...关联容器也有两类,一类是map,multimap和set,multiset这种底层为红黑树的容器,另一类是哈希结构。...),表面上set只有一个参数T,但其实set内部存放的是这样的键值对 set的大部分成员函数和STL中其他的容器类似,所以就不一一介绍,这里只介绍具有set特性的成员函数

    21420

    Docker将nginx容器和php容器关联起来

    (按着菜鸟教程走下来的时候pull的) 于是请教前辈,是按方法①去操作还是php,nginx各开一个容器再去连接方法②,得到了方法②的回复,于是开始了漫长的道路。 单容器易于分发、维护。...因为它们是独立的,所有的东西都运行在同一个容器中,这点就像是一个虚拟机。但这也意味着,当你要升级其中的某样东西(比如PHP新版本)的时候,需要重新构建整个容器。...多容器可以在添加组件时提供更好的模块化。因为每个容器包含了堆栈的一部分:Web、PHP、MySQL等,这样可以单独扩展每个服务或者添加服务,并且不需要重建所有的东西。...,也就是让容器可以共享这个目录里的文件。...坑:如果没有把配置文件挂载出来,会出现配置文件出错,然后容器就无法start了,也无法进入修改,只能删除重新建立一个容器

    3.1K20

    STL关联容器-红黑树

    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(

    53230

    C++: unordered系列关联容器

    正文开始 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快,但它通常在遍历元素子集的范围迭 代方面效率较低。

    8010

    VSCode关联Laradock 容器配置PHPCS插件

    本文 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 或者容器,让电脑处于「办公」状态。「开发」与「行政办公」无缝切换。

    1.5K20

    C++ Qt开发:使用关联容器

    本章我们将主要学习关联容器,主要包括 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。它主要用于存储唯一值,而不关心元素的顺序。

    49610

    【C++】STL 容器 - map 关联容器 ① ( std::map 容器简介 | std::map 容器排序规则 | std::map 容器底层实现 )

    文章目录 一、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

    1.8K10

    【笔记】《C++Primer》—— 第11章:关联容器

    这一章介绍了标准库中的关联容器们,主要是11.3的对有序关联容器操作的介绍。这章比较短,也只是比较工具性的东西,快速浏览即可。下一章就是C++的重要运用:动态内存管理。...11.1 使用关联容器 关联容器和顺序容器有根本的不同,关联容器中的元素是按照关键保存和访问的,而不是顺序容器中的按照容器位置来保存和访问 标准库中最主要的两个关联容器就是map和set。...和顺序容器一样,关联容器也是模板类型,因此为了定义关联容器我们也需要指定关键字和值的类型,按照:map,set的格式 关联容器同样可以得到对应元素的迭代器,但是使用上稍有差别...当使用makepair时,pair的类型是编译器推断的 11.3 关联容器操作 关联容器有一组表示出容器类型的成员如下,我们用域运算符来得到容器相应的类型成员。...find效率也会很低 实际应用中我们使用容器自带的一些算法进行处理,例如关联容器自带的find 我们可以用成员函数insert或emplace来向关联容器插入元素,使用方法和顺序容器类似。

    53520

    《C++Primer》第十一章 关联容器

    简介 标准库提供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.

    37830

    C++(STL):28 ---关联容器map用法

    作为关联容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。...通常情况下,map 容器中存储的各个键值对都选用 string 字符串作为键的类型。 与此同时,在使用 map 容器存储多个键值对时,该容器会自动根据各键值对的键的大小,按照既定的规则进行排序。...创建C++ map容器的几种方法 map 容器的模板类中包含多种构造函数,因此创建 map 容器的方式也有多种,下面就几种常用的创建 map 容器的方法,做一一讲解。...通过此方式创建出的 myMap 容器,初始状态下是空的,即没有存储任何键值对。鉴于空 map 容器可以根据需要随时添加新的键值对,因此创建空 map 容器是比较常用的。...有关 map 容器迭代器,后续章节会做详细讲解。 5) 当然,在以上几种创建 map 容器的基础上,我们都可以手动修改 map 容器的排序规则。

    1.1K20
    领券