C++ STL|深入理解关联容器multimap和map及其查找操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ STL|深入理解关联容器multimap和map及其查找操作相关的知识,希望对你有一定的参考价值。

参考技术A 关联容器map和multimap为了实现接近于logn的查找(二分查找)效率,将一维的数据组织成二维的树型逻辑结构(红黑树做为底层逻辑结构)。由此,为了维护其元素有序结构,其增加元素的成员函数是insert(),而不是序列容器的push_back()或list、deque容器的push_front()。

关联容器multimap是一个key与多个value的映射关系。

关联容器map是一个key与一个value的映射关系。

因为map一一映射的特性,所以有额外的成员函数at()和重载操作符operator[]。

demo:

2.1 使用成员函数lower_bound()和upper_bound()

demo:

2.2 使用成员函数equal_range()

equal_range()返回一对起始位置和终点位置的迭代器(pair类型),可以使用一个迭代器指向返回的pair的first和second。Associative container function equal_range() returns a pair containing the results a lower_bound and an upper_bound operation.

另一种写法:

demo:

demo:

demo:

成员函数at有边界检查,当然也有性能损耗。

demo:

重载操作符operator[]没有边界检查,当然也就避免了性能损耗。

demo:

ref

http://www.cplusplus.com/reference/map/multimap/count/

http://www.cplusplus.com/reference/map/multimap/equal_range/

以上是关于C++ STL|深入理解关联容器multimap和map及其查找操作的主要内容,如果未能解决你的问题,请参考以下文章

C++ 关联容器set | map | multiset | multimap

STL —— multimap的用法详解

STL—map/multimap容器

类 C++ STL 的双向 Multimap

STL标准库-容器-map和multimap

STL之Map和multimap容器