本章我们将主要学习关联容器,主要包括 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。它主要用于存储唯一值,而不关心元素的顺序。
文章目录 一、 vector 容器容量大小操作 1、vector 容器容量判定 2、vector 容器重新指定容器大小 3、代码示例 二、 vector 容器尾部插入 / 删除元素 1、vector 容器尾部插入元素...2、vector 容器尾部删除元素 一、 vector 容器容量大小操作 1、vector 容器容量判定 vector 容器容量判定 : 获取元素个数 : size() 函数返回 vector 容器中元素的数量...重新指定长度 : 参数 n 表示新的容器大小 ; 如果 n 大于当前容器的大小 , 则会在容器的末尾添加元素 , 使用元素类型的默认构造函数创建新元素 ; 如果 n 小于当前容器的大小 , 则会在容器的开头删除元素..., 则会在容器的末尾添加元素指定元素 val 参数 ; 如果 n 小于当前容器的大小 , 则会在容器的开头删除元素 ; // 重新指定容器大小 并进行填充 void resize(size_type...二、 vector 容器尾部插入 / 删除元素 1、vector 容器尾部插入元素 vector 容器尾部插入元素 , 可以调用 push_back 函数实现 , 该函数原型如下 : void push_back
之前介绍过标准库中的顺序容器,顺序容器是元素在内存中按照一定顺序进行排列的,都是按线性结构进行排列。除了顺序容器外,c++中还有关联容器。与顺序容器不同的是,关联容器中元素是按照关键字来保存和访问的。...与之相对的顺序容器是按它们在容器中的位置来顺序的保存和访问的。 关联容器支持高效的查找和访问。两个主要的关联容器类型是map和set。...、unordered_multiset 关联容器概述 关联容器不支持顺序容器中的位置相关操作,例如 push_back、push_front。...关联容器的操作 关联容器定义了额外的类型别名 key_type: 此容器类型的关键字类型 mapped_type: 每个关键字关联的类型:只适用与map value_type: 对于set,与key_value...关键字是const这一特性意味着不能将关联容器传递给修改或者重排容器元素的算法。关联容器可以使用只读取元素的算法。但是很多这类算法都要搜索序列。
作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。...其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、使用结构体或类自定义的类型。...创建C++ map容器的几种方法 map 容器的模板类中包含多种构造函数,因此创建 map 容器的方式也有多种,下面就几种常用的创建 map 容器的方法,做一一讲解。...C++ 11 标准中,还为 map 容器增添了移动构造函数。当有临时的 map 对象作为参数,传递给要初始化的 map 容器时,此时就会调用移动构造函数。...C++ map容器包含的成员方法 表 1 列出了 map 容器提供的常用成员方法以及各自的功能。
但是,C++ 标准为了防止用户修改容器中元素的值,对所有可能会实现此操作的行为做了限制,使得在正常情况下,用户是无法做到修改 set 容器中元素的值的。...创建C++ set容器的几种方法 常见的创建 set 容器的方法,大致有以下 5 种。 1) 调用默认构造函数,创建空的 set 容器。...另外,C++ 11 标准还为 set 类模板新增了移动构造函数,其功能是实现创建新 set 容器的同时,利用临时的 set 容器为其初始化。...(), myset.end()); 由此初始化的 copyset 容器,其内部仅存有如下 2 个 string 字符串: "C++" "nodejs" 5) 以上几种方式创建的 set 容器,都采用了默认的...> 降序规则,myset 容器中元素的存储顺序为: "php" "nodejs" "c++" C++ STL set容器包含的成员方法 表 1 列出了 set 容器提供的常用成员方法以及各自的功能。
关联容器 与顺序容器不同,关联容器的元素是按keyword来訪问和保存的。而顺序容器中的元素是按他们在容器中的位置来顺序保存的。...关联容器最常见的是map、set、multimap、multiset map的元素以键–值【key-value】对的形式组织:键用作元素在map中的索引,而值则表示所存储和读取的数据。...pair类型 首先介绍下pair,pair定义在utility头文件里,一个pair保存两个数据成员,类似容器,pair是一个用来生成特点类型的模板。...关联容器操作: key_type——此容器类型的keyword类型 mapped_type——每一个keyword关联的类型;仅仅适用于map value_type——对于set。...使用下标訪问map与使用下标訪问数组或vector的行为截然不同: 用下标訪问不存在的元素将导致在map容器中加入一个新元素,它的键即为该下标值。
map的特性 所有元素都会根据元素的键值自动被排序 map中的pair结构 map的所有元素类型都是pair,同时拥有实值(value)和键值(key) pai...
无论是前面学习的序列式容器,还是关联式容器,要想实现遍历操作,就必须要用到该类型容器的迭代器。当然,map 容器也不例外。...C++ STL 标准库为 map 容器配备的是双向迭代器(bidirectional iterator)。...值得一提的是,相比序列式容器,map 容器提供了更多的成员方法(如表 1 所示),通过调用它们,我们可以轻松获取具有指定含义的迭代器。...成员方法 功能 begin() 返回指向容器中第一个(注意,是已排好序的第一个)键值对的双向迭代器。如果 map 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。...,因为 map 容器中各键值对的键的值都是唯一的,因此通过 map 容器调用此方法,其返回的范围内最多也只有 1 个键值对。
一、关联式容器 序列式容器:已经接触过STL中的部分容器,比如:vector、list、deque、forward_list(C++11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构...关联式容器:也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的键值对,在数据检索时比序列式容器效率更高 ---- 二、键值对 用来表示具有一一对应关系的一种结构,...second(T2()) {} pair(const T1& a, const T2& b): first(a), second(b) {} }; ---- 三、树形结构的关联式容器...树型结构的关联式容器主要有四种:map、set、multimap、multiset。这四种容器的共同点是:使用平衡搜索树(即红黑树) 作为其底层结果,容器中的元素是一个有序的序列。...下面,我们一起来看一看这四种关联式容器 1.set \1. set是按照一定次序存储元素的容器 \2.
一、set set语法使用参阅: set的特性 set所有元素都会根据元素的键值自动被排序 set中的键值就是实值,实值就是键值 默认情况下set不允许两个元...
本文链接:https://blog.csdn.net/Enterprise_/article/details/102943141 关联容器和顺序容器的不同 关联容器和顺序容器的根本不同之处在于,关联容器中的元素是按关键字来保存和访问的...unordered_set unordered_multimap unordered_multiset 关联容器不支持和位置相关的操作,因为是按关键字顺序存储的,关联容器的迭代器都是双向的。...对于有序关联容器中的关键字类型要求 对与有序关联容器而言,关键字类型必须定义元素比较的方法(这一点尤其重要),默认时,使用关键字类型的 关联容器和算法 实际使用算法时,关联容器只能是一个源序列或者目的序列。...删除元素 关联容器有三个版本的erase操作,分别接受一个关键字,一个迭代器和一对迭代器。
文章目录 一、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
docker安装后,默认会创建三种网络类型,bridge、host和none,可通过如下命令查看 sudo docker network ls bridge:网络桥接 默认情况下启动、创建容器都是用该模式...,所以每次docker容器重启时会按照顺序获取对应ip地址,这就导致容器每次重启,ip都发生变化 none:无指定网络 启动容器时,可以通过–network=none,docker容器不会分配局域网...ip host:主机网络 docker容器的网络会附属在主机上,两者是互通的。...创建固定ip容器 1、创建自定义网络类型,并且指定网段 sudo docker network create --subnet=192.168.0.0/16 staticnet 通过docker...--ip 192.168.0.2 ubuntu /bin/bash 通过docker inspect可以查看容器ip为192.168.0.2,关闭容器并重启,发现容器ip并未发生改变 如果需要设置容器请求出去的
一、multiset multiset的特性以及用法和set完全相同,唯一的差别在于它允许键值重复,因此它的插入操作采用的是底层RB-tree的insert_e...
第 11 章 关联容器 标签: C++Primer 学习记录 关联容器 ---- 第 11 章 关联容器 11.1 使用关联容器 11.2 关联容器概述 11.3 关联容器操作 11.4 无序容器 -...--- 11.1 使用关联容器 标准库中定义了 8个关联容器,这些容器的不同体现在三个维度上。...关联容器定义了一些额外的类型别名。...关键字是 const的,这一特性使得不能将需要修改或重排容器元素的算法传递给关联容器。...关联容器可用于只读元素的算法,但是这类算法通常都要搜索序列,而对于关联容器,使用自定义的查找算法(基于二分查找)会比泛型算法(逐一比较)快得多。
容量和大小 函数原型: #include using namespace std; #include //vector的容量和大小 void print(vector...test() { vector v; for (int i = 0; i < 6; i++) v.push_back(i); if (v.empty()) { cout << "容器...v为空" << endl; } else { cout << "容器v不为空" << endl; cout << "容器v的容量为: " << v.capacity() << endl;...cout << "容器v的大小为:" << v.size() << endl; } //重新指定大小 v.resize(10,520); //利用重载版本,可以指定默认填充值--->参数2 print...(v); //如果重新指定的比原来长了,默认用0填充新位置 cout << "改变大小后的容器容量为: " << v.capacity() << endl; cout << "改变大小后的容器大小为
关联式容器 关联式容器即是用来存储数据的,并且存储的是结构的键值对,在数据检索时效率比序列式容器高。...序列式容器也就是vector、list、queue等容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。...树形结构的关联式容器 关联式容器有两种:一种是哈希结构的关联式容器,另一种是树形结构的关联式容器。树型结构的关联式容器主要有四种:map、set、multimap、multiset。...认识map ①map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素 ②在map中,键值key通常用于排序和唯一地标识元素,而值value中存储与此键值key...关联的内容,key与value使用pair绑定起来。
,也可以实现更新(修改)map 容器已存储键值对的值。...< endl; //借用insert()添加新键值对 std::pair STL = { "Javaplayer_02","{\"username\":\"C+..._3400_MS - 7C02(Micro - Star International Co., Ltd)"} old ret.iter = <{Javaplayer_02, {"username":"C+...那么,为什么不直接构造一个要添加的键值对元素呢,比如: mymap.insert(mstr::value_type("C++", "脱发严重")); 此行代码和上面程序的执行效果完全相同,但它省略了创建临时...[] mymap["C++"] = "脱发"; //insert() std::pair STL = { "node","霸王洗发水" }; mymap.insert(STL
容器hash_set是以hash table为底层机制的,差点儿所有的操作都是转调用hash table提供的接口。
一.容器 在C++中容器大致可以分为两种,分别是:序列式容器和关联式容器。...序列式容器:vector,list,deque,forward_lsit都是序列式容器,因为它们的底层都是线性序列的数据结构,存放的是元素本身。...关联式容器:虽然也是用来存储数据的,但是关联式容器中存放的并不是元素本身,而是这样的键值对,这样的容器在数据检索的时候效率会更高(插入删除不需要挪动数据,只需要更改指针指向,结构平衡时查找效率为...关联式容器也有两类,一类是map,multimap和set,multiset这种底层为红黑树的容器,另一类是哈希结构。...),表面上set只有一个参数T,但其实set内部存放的是这样的键值对 set的大部分成员函数和STL中其他的容器类似,所以就不一一介绍,这里只介绍具有set特性的成员函数
领取专属 10元无门槛券
手把手带您无忧上云