C++标准库之关联容器

基本常识:

  1)主要为:map 和 set。衍生型:multi和unorder.例如:multimap, unorder_multimap.

  2)使用pair作为单位元素。

    1,key-value组成一个pair.

    2,first成员:key。second成员:value。

    3,key为const类型不可改变。

  3)关联容器的构成:key-pair.

基本要点:

  1)通常不对关联容器使用 泛型算法。

  2)有序关联容器,有 严格弱序 的要求。默认使用 [<=]。当然,也可以使用谓词或lambda表达式来自定义。

时间: 2024-10-29 19:05:35

C++标准库之关联容器的相关文章

c++ 标准库的各种容器(vector,deque,map,set,unordered_map,unordered_set,list)的性能考虑

转自:http://blog.csdn.net/truexf/article/details/17303263 一.vector vector采用一段连续的内存来存储其元素,向vector添加元素的时候,如果容量不足,vector便会重新malloc一段更大的内存,然后把原内存中的数据memcpy到新的内存中,并free原内存块,然后将新元素加入.vector的元素插入性能跟以下几个要素关系重大: 1. 插入的位置 头部插入:将所有元素后移,然后将新元素插入 中间插入:将插入点后面的元素后移,然

C++ Primer(一)_标准库_顺序容器

目录 顺序容器 顺序容器 选择什么容器根据业务需求, 研读STL剖析了解底层数据结构, 更加清楚各种优势劣势 零碎点 迭代器被设置为左闭右合带来的编程假设 begin == end,范围为空 begin != end, 至少一个元素 begin可递增至end 两大类型的容器初始化--同类型容器拷贝,迭代器范围拷贝 前者要求容器类型一致 后者只要求元素可转换 两大类型的容器赋值--=号赋值,assign赋值 前者用于列表或同类型容器 后者用于迭代器,初始化列表,(n,elem)方式:限制顺序容器

《深入实践C++模板编程》之六——标准库中的容器

1.容器的基本要求 a.并非所有的数据都可以放进容器当中.各种容器模板对所存数据类型都有一个基本要求——可复制构造.将数据放进容器的过程就是通过数据的复制构造函数在容器内创建数据的一个副本的过程. b.容器中必须有若干与所存数据类型有关的嵌套定义类型. C::value_type 容器所存数据类型 C::reference 容器数据的引用类型 C::const_reference 容器数据的只读引用类型 C::size_type 容器容量类型,通常是一个无符号整数类型 c.除嵌套类型定义外,容器

C++标准库之顺序容器

通用概念. 顺序容器基本理解:按照顺序储存元素,并提供 元素具体操作(迭代器或其他) 和 顺序访问元素 的能力. 个人理解: 1)顺序:按照添加的先后次序排序.但,先进优先,还是后进优先取决于具体容器. 个人应用: 1)在可以使用容器时,尽量使用容器.因为你无法保证自己的算法优于整个开发组. 2)选择容器的基本原则(from C+ primer): 1,在不知道如何选择时,使用vector. 2,单个元素需求内存很小,内存紧缺时,不要使用list/forward_list. 3,已知添加操作时,

【C++标准库】特殊容器

特殊容器,又称为容器适配器(Container Adapter),它们改造了标准STL容器,使之满足特殊的要求. Stack堆栈 使用stack时,需包含头文件<stack> push() 将一个元素压入栈内 pop() 从栈内移除下一个元素,但是并不返回它 top()         返回栈内下一个元素,但并不移除它. 如果stack内没有元素,top()和pop()会导致不明确的行为,可采用size()或empty()来检查容器是否为空. Queue队列 Queue实现出了一个FIFO先进

【C++标准库】STL容器

STL容器的共通能力 所有容器提供的都是"value语义"而非"reference语义".容器进行元素的安插动作时,内部进行copy或者move,而不是管理元素的reference. 元素在容器内有其特定顺序. 一般,各项操作并非绝对安全,调用者需要确保传给操作函数的实参符合条件. const vector<int> v1 = { 1,2,3,4,5,6 }; //使用初值列初始化 vector<float> v2(v1.begin(), v

STL源码剖析---关联容器

标准关联容器分为set和map两大类,包括multiset和multimap,这些容器的底层机制都是RB-tree.标准之外的关联容器有hashtable 以及以此hash table为底层机制而完成的hash_set(散列集合) hash_map(散列映射表) hash_multiset  hash_multimap. 序列和关联容器各自的内部关系是内含的,例如heap内含一个vector,priority_quehe内含一个heap,stack和queue都内含一个deque,set/map

C++教程 扩展标准库第一部分

今天给大家带来的是C++扩展标准库的一些知识点的讲解!这是一部分,后面还会更新另外的一部分! ok,今天我们说另一个小工具,这个工具在处理一些复杂数据的时候会有一些意想不到的效果,不过这得和大家说一些,我是一个标准的标准库忠实者,所以我写程序基本都会优先考虑库,然后在世boost库,而接下来的东西我会借助标准库的东西进行扩展的. 既然是标准库的扩展,那么第一步我们可以先将标准库的东西再进行一些简化,当然这些简化只是为了我们在调试程序的时候方便使用一些. C++的标准输出输入流为了简便都提供了一个

C++学习笔记之STL标准库(六)set/multiset 关联容器

包含头文件 #include <set>  声明命名空间using namespace std; set/multiset是关联容器的一种,它们会对存储的元素进行自动排序,存储元素的值不能直接的被改变,只能通过删除旧值,再插入新值的方式达到更改元素值的目的.set不允许元素的值有重复,而multiset允许有重复的元素,这是他们的唯一区别.关联容器set, multiset以及后面的map, multimap内部采用的是一种非常高效的平衡检索二叉树:红黑树. 1)构造函数 set(); //创