(5)std::multimap
std::multimap 是 C++ 标准模板库(STL)中的一个关联容器,它是 std::map 的变体,其核心特性是允许键(key)重复。
键值对存储:
- 和 std::map 一样,每个元素是一个 std::pair<const Key, T>。
- 键不是唯一的,允许多个元素拥有相同的键。
有序性:
- 元素根据键自动按升序排列(默认使用 std::less<Key>)。
- 对于具有相同键的元素,它们在容器中的相对顺序是按照插入顺序维护的(稳定排序)。
基于平衡二叉搜索树:
- 底层通常使用红黑树实现,这保证了操作的稳定性能。
对数时间复杂度:
- 查找、插入、删除单个元素的操作平均和最坏时间复杂度为 O(log n)。
- 删除所有具有特定键的元素或查找范围的时间复杂度为 O(log n + k),其中 k 是匹配元素的数量。
不支持 operator[]:
- 这是与 std::map 的一个关键区别。因为一个键可能对应多个值,所以无法通过 m[key] 唯一确定返回哪个值。因此,std::multimap 没有 operator[] 成员函数。
// 遍历查找
std::map<string, Ptr>::iterator lowit = multimap.lower_bound(alarmID);
std::map<string, Ptr>::iterator upit = multimap.upper_bound(alarmID);
for(; lowit !=upit; lowit++)
浙公网安备 33010602011771号