📅  最后修改于: 2023-12-03 14:39:53.009000             🧑  作者: Mango
在C++ STL(Standard Template Library)中,multi-set是一个容器,它允许存储多个键相同的元素,且这些元素按照一定的顺序排列。multi-set的实现采用了红黑树(Red-Black Tree)数据结构。
STL的multi-set容器提供了一个成员函数equal_range(),用于在容器中寻找与某个给定值相等的元素区间。它的函数原型如下:
pair<iterator, iterator> equal_range(const Key& key);
其中,pair是STL中的一个模板类,iterator是STL中的迭代器类,Key是要查找的元素类型。
equal_range()函数返回的是一个pair对象。pair中包含两个迭代器,第一个迭代器指向第一个与给定值相等的元素,第二个迭代器指向最后一个与给定值相等的元素的下一个位置。如果没有找到与给定值相等的元素,则返回一对迭代器,它们指向可以插入给定值的位置。
下面是一个使用equal_range()函数的示例代码:
#include <iostream>
#include <set>
using namespace std;
int main() {
// 创建一个multi-set
multiset<int> ms = {1, 2, 2, 3, 4, 4, 4, 5};
// 使用equal_range查找值为2的元素
auto range = ms.equal_range(2);
// 输出结果
cout << "lower_bound position: " << distance(ms.begin(), range.first) << endl;
cout << "upper_bound position: " << distance(ms.begin(), range.second) << endl;
return 0;
}
输出结果为:
lower_bound position: 1
upper_bound position: 3
在这个示例中,我首先创建了一个multi-set ms,然后使用equal_range()函数查找值为2的元素。equal_range()函数返回一个pair对象,我将其保存在变量range中。最后,我输出了符合要求的元素区间的位置。
equal_range()函数是STL的multiset容器中一个非常有用的成员函数。通过使用equal_range()函数,我们可以快速地查找multi-set中与某个给定值相等的元素区间,并进行进一步的操作。