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

【C++】STL 容器总结 ( STL 各容器特点 | STL 个容器使用场景 | 单端数组容器 | 双端队列容器 | 双向链表容器 | 集合容器 | 多重集合容器 | 映射容器 | 多重映射容器 )

; 6、std::map 映射容器 std::map 映射容器特点 : 底层结构 : 底层由 红黑树 实现 , 红黑树 是 一种 平衡二叉搜索树 , 存储空间 不连续 ; 存储的 元素 是 键值对...不允许重复的键 , multimap 多重映射容器允许重复的键 ; 使用场景 : 需要 有序 键值对 且 元素 不重复 的场景 ; std::map 映射容器 与 std::set 集合容器 的区别是...map 容器存储的是 键值对 元素 , 是 pair 对象 , set 容器 存储的是 单纯的 键 单个元素 ; 7、std::multimap 多重映射容器 std::multimap 多重映射容器特点...不允许重复的键 , multimap 多重映射容器允许重复的键 ; 使用场景 : 需要 有序 键值对 且 元素 重复 的场景 ; 二、STL 各容器特点总结 vector 单端数组 deque 双端队列...list 双向链表 set 集合 multiset 多重集合 map 映射 multimap 多重映射 底层数据结构 单端数组 双端数组 双向链表 红黑二叉树 红黑二叉树 红黑二叉树 红黑二叉树 随机访问

4.7K10

【C++】STL 标准模板库 ① ( STL 简介 | STL 基本概念 | STL 主要内容 )

一、STL 简介 1、STL 概念 C++ 语言 的 STL " 标准模板库 " 英文全称 " Standard Template Library " , STL 是一套强大的 C++ 库 , 其中包含了各种通用的...数据结构和算法 , 如 : 向量、列表、队列、排序等 ; STL 是 C++ 标准的一部分 , 所有的 C++ 编译器 都应该支持该标准 ; 2、STL 主要内容 STL 的主要内容 : 容器 : 存储数据的类...; 向量 vector , 双端队列 deque , 表 list , 队列 queue , 堆栈 stack , 集合 set , 多重集合 multiset , 映射 map 和 多重映射 multimap...: 元素不能重复的集合 ; 多重集合 multiset : 元素可以重复的集合 ; 映射 map : 存放键值对 , 一个键对应一个值 ; 多重映射 multimap : 存放键值对 , 一个键对应多个值...头文件 #include "vector" 使用 STL 算法需要导入 algorithm 头文件 , #include "algorithm" sort 排序算法将无序的 vector

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

    【C++100问】深度总结STL基本容器的使用

    在关键字类型的元素没有明显的序关系的情况下,无序容器是非常有用的。在某些应用中,维护元素的序代价非常高昂, 此时无序容器也很有用。使用无序容器通常更为简单(通常也会有更好的性能) 。...其中,STL 提供的 最常用的: 四个 顺序容器: 向量(vector); 双端队列(deque); 列表(list); 字符串(string); 四个 关联容器: 集合(set);多重集合(multiset...); 映射(map);多重映射(multimap); 三种 适配器: 栈(stack); 队列(queue); 优先级队列(priority_queue); 四种 无序容器: unordered_map...map)和多重映射(multimap) map(映射):由红黑树实现,其中每个元素都是一些 键值对(key-value):关键字起索引作用,值表示与索引相关联的数据。...multimap(多重映射):唯一的区别是插入的元素(值)可以相同,即同一个键可以对应多个值。 优缺点: 优点:关键字查询高效,且元素唯一,以及能自动排序。把一个值映射成另一个值,可以创建字典。

    1.2K31

    C++ STL精通之旅:向量、集合与映射等容器详解

    STL STL 作为一个封装良好,性能合格的 C++ 标准库,在算法竞赛中运用极其常见。...不过 STL 毕竟使用了很多复杂的结构来实现丰富的功能,它的效率往往是比不上自己手搓针对特定题目的数据结构与算法的。因此,STL 的使用相当于使用更长的运行时间换取更高的编程效率。...集合三要素 解释 set multiset unordered_set 确定性 一个元素要么在集合中,要么不在 ✔ ✔ ✔ 互异性 一个元素仅可以在集合中出现一次 ✔ ❌(任意次) ✔ 无序性 集合中的元素是没有顺序的...性质 解释 map multimap unordered_map 互异性 一个键仅可以在映射中出现一次 ✔ ❌(任意次) ✔ 无序性 键是没有顺序的 ❌(从小到大) ❌(从小到大) ✔ 常用方法 构造...二元组pair 头文件#include 顾名思义,就是储存二元组的。

    24200

    【C++篇】无序中的法则:探索 STL之unordered_map 与 unordered_set容器的哈希美学

    前言 C++ 标准模板库(STL)中的 unordered_map 和 unordered_set 是哈希表实现的关联容器。...无序存储:键的顺序不固定,存储顺序根据哈希函数决定。 高效查找:平均情况下查找时间复杂度为 O(1)。 unordered_set 是一种关联容器,仅存储唯一元素,没有键值对结构。...map 和 set 的性能较为稳定,但在大规模数据处理上可能不及无序容器。...使用合适的数据结构:unordered_map 和 unordered_set 适用于无序数据且追求 O(1) 查找和插入的场景,但若需要有序数据或区间查询,建议选择 map 或 set。...以上就是关于【C++篇】无序中的法则:探索 STL之unordered_map 与 unordered_set容器的哈希美学的内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力

    27810

    【C++】STL 标准模板库 ③ ( STL 容器简介 | STL 容器区别 | STL 容器分类 | 常用的 STL 容器 )

    一、STL 容器简介 1、STL 容器区别 STL 容器 用于管理 一组 数据元素 , 不同类型的 STL 容器 的区别 主要是 节点 和 节点之间的关系模型 不同 ; 容器的内存空间是否连续 : 向量...主要是 研究 节点 与 节点 之间关系的 ; 2、STL 容器分类 STL 容器 分为 2 大类 , 分别是 " 序列式容器 " 和 " 关联式容器 " ; 序列式容器 : Sequence Containers..., 多重集合 MultiSet , 映射 Map , 多重映射 MultiMap 是 关联式容器 ; 如下图所示 , 关联式容器的元素位置与特定规则有关 , 与插入时间和位置无关 ; 3、常用的 STL...; 多重集合 的元素在容器中根据指定的比较函数按键值排序 , 因此它是有序的 ; 多重集合 的元素不需要具有唯一键 , 一个键值可具有多个相关联的元素值 ; 需导入 头文件 ; 映射...map : 存放键值对 , 一个键对应一个值 ; 需导入 头文件 ; 多重映射 multimap : 存放键值对 , 一个键对应多个值 ; 需导入 头文件 ;

    92730

    【精选】算法设计与分析(第一章概述知识点)

    概述 STL主要由容器、算法和迭代器三大部分构成 5、STL容器 基础容器 向量 字符串 双端队列 链表 适配器容器 栈 队列 优先队列 在使用STL时必须加入 using namespace std...6、STL迭代器 每个容器都有自己的迭代器 7、常用的STL容器(没时间可以看一个大概) (一)顺序容器 vector(向量容器) begin:得到数组头的指针 end:得到数组的最后一个单元+...<< std::endl; return 0; } map(映射容器)/multimap(多重映射容器) #include #include int main...std::cout 多重映射中的键值对: " << std::endl; for(auto it = myMultiMap.begin(); it !...myMultiMap.end(); ++it) { std::cout first second << std::endl; } // 获取多重映射中某个键对应的所有值

    16910

    多组学文献分享---组织中染色质特征、转录组和蛋白质的多重空间映射

    今天分享文章知识积累细胞的表型和功能状态是由多个组学层复杂的相互作用的分子层次调节的,包括基因组、表观基因组、转录组、蛋白质组和代谢组。...在多细胞生物中,细胞区室的组织、结构和细胞间的相互作用对细胞的功能状态至关重要。细胞转录程序是通过多种表观遗传模式的作用决定的,包括转录因子(tf)和协同或拮抗组蛋白标记的共同出现。...这些相互作用的染色质调控因子对下游基因或蛋白质表达的影响在目前的单细胞和空间方法中是缺失的。...两组蛋白修饰的空间共谱分析两个相互排斥的组蛋白修饰:H3K27me3,一个参与基因沉默和细胞身份维持的抑制标记,以及H3K27ac,一个发现于与基因表达相关的增强子和启动子的活性标记。...实际运用:小鼠大脑的多重空间映射表观基因组、RNA和蛋白质的五模态分析应用于在同一组织切片中共分五种模式——染色质可及性、两种组蛋白修饰、转录组和大量细胞表面蛋白。

    7400

    STL容器分类「建议收藏」

    容器里面的对象必须是同一类型,该类型必须是可拷贝构造和可赋值的,包括内置的基本数据类型和带有公用拷贝构造函数和赋值操作符的类。典型的容器有队列、链表和向量等。 在标准C++中,容器一般用模版类来表示。...不过STL不是面向对象的技术,不强调类的层次结构,而是以效率和实用作为追求的目标。所以在STL并没有一个通用的容器类,各种具体的容器也没有统一的基类。...关联容器可以视为关联数组、映射或字典的推广,它们保存的都是值的对偶,给定了其中的一个被称为键(key)的值,就可以快速访问与其对偶的另一个被称为映射值(mapped value)的值。...multiset(多重集合)—— 支持可重复键值,并提供对键本身的快速检索;例如set:{姓名}(可能有同名的)(对应于multiset类,也定义在头文件中); n...map类,定义在头文件中); n multimap(多重映射)—— 支持可重复Key类型的键值,并提供对另一个基于键的类型T的快速检索;例如map<string

    72510

    掌握 C++ 标准库(STL):理解STL的核心概念

    它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。二、容器简介STL容器,可将其分为四类:序列容器、有序关联容器、无序关联容器、容器适配器。...,无重复元素,基于键快速查找multimap一对一映射,可有重复元素,基于键快速查找无序关联容器:标准库容器类描述unordered_set快速查找,无重复元素unordered_multiset快速查找...指向 数组的指针可以代替迭代器用于几乎所有的 STL 算法中,包括那些要求随机访问迭代器的算法。下表显示了每种 STL 容器所支持的迭代器类型。...由于无序容器内部是散列表,因此无序容器的 key 需要提供 hash_value 函数,其他用法和map/set 的用法是一样的。不过对于自定义的 key,需要提供 Hash 函数和比较函数。...因此,其元素的排列顺序是无序的。

    31810

    c++stl基础及应用_stl详解

    ⭐️C++ STL常用内容总结⭐️ C++ STL 超全总结-基于算法竞赛(悠享版)(较好观感) 注:我是以打算法竞赛的角度整理的STL知识点,强调使用方法,并不强调原理。...下面会介绍很多C++ STL库里面的模板,在编程中STL犹如神器,实用简洁好用。 STL绝对让你受益无穷!...1.vector动态数组 2.stack栈 3.queue队列 4.deque双端队列 5.priority_queue优先队列 6.map映射 7.set集合 8.pair二元组 9.string字符串...10.bitset 11.array数组 12.tuple元组 STL相关内容 C++ STL函数总结 ---- 由于作者水平有限,内容纯手敲,整理可能有误。...如果有哪些不足或者错误的地方,也希望大家督促我尽快改正哦,我会及时回复的。 我的个人博客 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    63810

    【C++】基础:STL标准库常用模块使用

    map:映射,存储键值对,按照键的大小进行自动排序。 unordered_set:无序集合,存储唯一值,并提供常数时间的查找操作。...unordered_map:无序映射,存储键值对,并提供常数时间的查找操作。 :satisfied:3. 常用算法模块 sort:对容器进行排序。 find:在容器中查找指定元素。...STL提供了各种不同类型的容器,包括动态数组(vector)、双向链表(list)、队列(queue)、栈(stack)、集合(set)、映射(map)等。...STL的优点有: 1.可重用性:STL提供了通用的数据结构和算法,可以在不同的项目和场景中重复使用,避免了重复编写相似的代码。 2.高效性:STL中的容器和算法都经过了优化,具有高效的实现。...unordered_map:无序映射,存储键值对,并提供常数时间的查找操作。 3. 常用算法模块 sort:对容器进行排序。

    14010

    C++ STL详解

    STL容器就为我们提供了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型下的数据结构,通过设置一些模版类,STL容器对最常用的数据结构提供了支持,这些模板的参数允许我们指定容器中元素的数据类型...,可以将我们许多重复而乏味的工作简化。... 集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序  多重集合(multiset) 允许存在两个次序相等的元素的集合...  映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列  多重映射(multimap) 允许键对有相等的次序的映射  迭代器 软件设计有一个基本原则...概括来说,迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。

    12910

    STL

    STL:泛型程序设计(程序的通用性) 1、STL定义 STL(标准模板库)惠普实验室开发的一系列软件的统称。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。...STL现在是C++的一部分,被内建在你的编译系统之内。... 关联式容器 集合(set)由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能 够拥有相同的次序 多重集合(multiset...)允许存在两个次序相等的元素的集合 映射(map)由{键,值}对组成的集合,以某种作用于键对上的谓词排列 多重映射(multimap)允许键对有相等的次序的映射 ...Stl =抽象出(算法+数据结构)以实现通用,是一套可拓展的框架 Stl中的六大组件: 容器(数据结构) 算法 迭代器 函数对象(仿函数)(用于扩展) 分配器(用于扩展

    84730

    STL map, hash_map , unordered_map区别、对比

    由于在C++标准库中没有定义散列表hash_map,标准库的不同实现者将提供一个通常名为hash_map的非标准散列表。因为这些实现不是遵循标准编写的,所以它们在功能和性能保证上都有微妙的差别。...所选择的备用名称是unordered_map,它更具描述性,因为它暗示了类的映射接口和其元素的无序性质。...不同的是unordered_map不会根据key的大小进行排序, map 内部数据的组织,基于红黑树实现,红黑树具有自动排序的功能,因此map内部所有的数据,在任何时候,都是有序的。...底层实现上,使用一个下标范围比较大的数组来存储元素,形成很多的桶,利用hash函数对key进行映射到不同区域进行保存。...可以见STL源码剖析: STL源码剖析-hash_set / hash_multiset STL源码剖析-hash_map / hash_multimap STL源码剖析-hashtable

    4.9K50

    Python与人工智能——5、Python数据类型

    Python 的整数类型在理论上可以表示任意大的整数,不会像某些编程语言那样受到固定位数的限制。 浮点数类型(float): 用于表示带有小数部分的数值。例如:3.14、-2.5。...应用场景: 用于存储一组相关的数据,如一组学生的成绩、一组文件名等。 在需要动态调整大小和内容的情况下非常有用。 四、元组类型(tuple) 定义:与列表类似,但元组是不可变的序列。...五、集合类型(set) 定义:由一组无序、不重复的元素组成。例如:{1, 2, 3}。 特点: 自动去除重复元素。 支持集合的并集、交集、差集等运算。...六、字典类型(dict) 定义:是一种映射类型,由键值对组成。例如:{'name': 'Alice', 'age': 25}。 特点: 通过键来快速访问对应的值。...元组不可变,适合存储固定数据。集合无序且不重复,用于去重和集合运算。字典通过键值对存储数据,方便快速查找。这些数据类型各具特点,在不同场景中发挥重要作用,满足了程序设计中对各种数据的存储和处理需求。

    7310

    Python之集合、字典及练习题详解

    (下面有详细介绍)  (2)字典  字典(dictionary)是Python中另一个非常有用的内置数据类型。  列表、元组都是有序的对象集合,字典是无序的对象集合。...两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取(即可以通过索引来读取)。  字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。...补充说明:映射类型   映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串、数字、元组等...xxxx能能字典xxxx能能 注意:在开篇我们说过集合与字典都是无序的,那么索引、分片就没有意义;且集合的功能之一就是去重,而字典是映射类型,Key是唯一的,同样重复与连接也就不支持  类型功能列表相当于一个数据仓库...,可以存放各种类型的数据,如:a = [1,2,3]元组元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。

    1.8K20
    领券