这篇文章主要讲 map 的赋值.删除.查询.扩容的具体执行过程,仍然是从底层的角度展开.结合源码,看完本文一定会彻底明白 map 底层原理. 我要说明的是,这里对 map 的基本用法涉及比较少,我相信可以通过阅读其他入门书籍了解.本文的内容比较深入,但是由于我画了各种图,我相信很容易看懂. 什么是 map 维基百科里这样定义 map: In computer science, an associative array, map, symbol table, or dictionary is an
map<T, T>是C++的STL中存储key-value键值对数据结构的最基础的模板类,相对于multimap可以重复的key值,map的key是非重复的. C++的reference这样说明的: std::map is a sorted associative container that contains key-value pairs with unique keys. Keys are sorted by using the comparison function Compare.
前言 最近正好刚刚看完,<stl源码剖析>这本书的map和set的源码部分.但是看完之后又突然发现,之前怎么没有注意到map和set容器中key不能修改是怎么实现的.故,特此整理如下. set容器中的实现 set中具体怎么实现的,看源码是最清楚的,下面就是set的部分源码: class set { ...... private: typedef rb_tree<key_type, value_type, identity<value_type>, key_compare, A