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及其查找操作的主要内容,如果未能解决你的问题,请参考以下文章