set 中pair<iterator,iterator>equal_range(elem)的使用例子
时间: 2024-02-18 11:03:18 浏览: 27
假设我们有一个 `set<int>` 对象 `my_set`,其中包含 {1, 2, 3, 4, 5} 这些元素。如果我们想查找元素 3 在 set 中的位置,可以使用 `equal_range` 函数。以下是使用 `equal_range` 的示例代码:
```c++
#include <iostream>
#include <set>
int main() {
std::set<int> my_set = {1, 2, 3, 4, 5};
auto range = my_set.equal_range(3);
for (auto it = range.first; it != range.second; ++it) {
std::cout << *it << ' ';
}
return 0;
}
```
在上面的代码中,我们首先创建了一个包含 {1, 2, 3, 4, 5} 的 `set<int>` 对象 `my_set`。然后,我们使用 `my_set.equal_range(3)` 查找元素 3 在 set 中的位置。`equal_range` 函数返回一个 `pair` 对象,其中 `pair.first` 是指向第一个等于 3 的元素的迭代器,`pair.second` 是指向最后一个等于 3 的元素的下一个位置的迭代器。因为在这个例子中只有一个元素等于 3,所以 `pair.first` 和 `pair.second` 都指向同一个元素。我们可以使用 `pair.first` 输出这个元素的值。
相关问题
pair<iterator,iterator>equal_range(key)的使用例子
好的,下面是一个使用pair<iterator,iterator>equal_range(key)函数的例子:
```c++
#include <iostream>
#include <map>
using namespace std;
int main()
{
// 创建一个multimap对象
multimap<int, string> mm;
// 插入一些数据
mm.insert(make_pair(1, "one"));
mm.insert(make_pair(2, "two"));
mm.insert(make_pair(3, "three"));
mm.insert(make_pair(2, "second")));
mm.insert(make_pair(4, "four"));
// 查找键值等于2的元素范围
pair<multimap<int, string>::iterator, multimap<int, string>::iterator> range = mm.equal_range(2);
// 遍历结果
for (auto it = range.first; it != range.second; ++it)
{
cout << it->first << " : " << it->second << endl;
}
return 0;
}
```
上述代码中,我们创建一个multimap对象mm,插入了5个键值/值对。然后使用equal_range函数查找键值等于2的元素范围,将结果保存在一个pair对象range中,遍历range中的元素并输出。输出结果如下:
```
2 : two
2 : second
```
可以看到,输出结果中只有键值等于2的两个元素被找到并输出。
pair<iterator,iterator>equal_range(key)使用
STL库中的multimap类提供了一个名为equal_range的成员函数,用于查找multimap中所有键值等于指定键值的元素的范围。equal_range函数的语法如下:
```c++
pair<iterator, iterator> equal_range(const key_type& key);
```
其中,key参数表示需要查找的键值。
equal_range函数返回一个pair,包含两个迭代器,表示键值等于指定键值的元素范围。第一个迭代器指向第一个键值等于指定键值的元素,第二个迭代器指向最后一个键值等于指定键值的元素的下一个位置。
如果multimap中不存在键值等于指定键值的元素,则返回的pair中两个迭代器都指向multimap的end()位置。
使用equal_range函数可以方便地查找multimap中所有键值等于指定键值的元素。