📜  C++ STL中的multimap equal_range()(1)

📅  最后修改于: 2023-12-03 14:39:52.089000             🧑  作者: Mango

C++ STL中的multimap equal_range()

multimap是C++ STL中的一个关联容器,它类似于map,但允许有多个重复的键。equal_range()是multimap提供的一个成员函数,用于查找特定键的所有元素范围。

语法
pair<iterator, iterator> equal_range(const key_type& key);
  • key_type是multimap中键的类型。
  • 返回一个pair对象,其中第一个迭代器指向范围中第一个具有给定键的元素,第二个迭代器指向范围中超出给定键的第一个元素。
参数
  • key: 要查找的键。
返回值

equal_range()函数返回一个pair对象,包含两个迭代器,分别指向范围中首个满足给定键的元素和超出给定键的第一个元素。

示例

假设我们有一个multimap对象存储了学生的名字和他们参加的活动:

std::multimap<std::string, std::string> studentActivities;
studentActivities.insert({"Alice", "Swimming"});
studentActivities.insert({"Bob", "Cycling"});
studentActivities.insert({"Alice", "Basketball"});
studentActivities.insert({"Charlie", "Basketball"});

我们可以使用equal_range()函数来获取每个学生参加的活动范围:

auto range = studentActivities.equal_range("Alice");

for (auto it = range.first; it != range.second; ++it) {
    std::cout << it->first << ": " << it->second << std::endl;
}

输出结果:

Alice: Swimming
Alice: Basketball

在上面的示例中,equal_range("Alice")返回一个pair对象,其中第一个迭代器指向multimap中"Alice"的第一个元素,第二个迭代器指向multimap中超出"Alice"的第一个元素。然后,我们可以使用这个迭代器范围来逐个打印出学生Alice参加的活动。

适用场景

equal_range()函数在需要查找multimap中与给定键相关的所有元素时非常有用。它返回一个迭代器范围,您可以进一步处理或操作这个范围的元素。

注意,由于multimap允许重复的键,equal_range()函数的返回结果可能包含多个元素。

总结

equal_range()是C++ STL中multimap容器提供的一个有用的成员函数,它允许您快速查找multimap中与给定键相关的元素。返回的pair对象包含两个迭代器,用于访问找到的元素范围。该函数在需要处理重复的键时非常有用。