multimap多值查询

🎯 目的:

利用 multimap一键多值特性,快速查找某个键 q 所有对应的值。


🔑 核心函数:equal_range(q)

  • 用于查找所有 键为 q 的元素范围。
  • 返回一个 pair<iterator, iterator>,表示一个区间 [first, second)
    • range.first:第一个满足 key == q 的迭代器;
    • range.second:第一个满足 key > q 的迭代器。
auto range = multimap.equal_range(q);

如何使用:

auto range = hx.equal_range("a");
vector<string> ans;
for (auto it = range.first; it != range.second; ++it) {
	ans.push_back(it->second);
}
  • 遍历 [range.first, range.second) 区间内所有键为 "a" 的元素。
  • 访问时用 it->second 获取对应的值(句子)。

未命中情况:

q 不存在于 multimap 中时:

range.first == range.second
  • 返回的是一个 空区间
  • for 循环不会进入,说明没有任何匹配项。

可以这样判断:

if (range.first == range.second) {
	cout << "没有找到" << endl;
}

📦 应用场景:

  • 句子首字母缩写匹配;
  • 分类标签多值查询;
  • 日志记录、反向索引、多对多关系查询等。

⬅️ L2-050 懂蛇语 🏠 00-天梯赛 ➡️ L2-051 满树的遍历