C++ STL 中的 set::equal_range() 函数


本文将讨论 C++ STL 中的 set::equal_range() 函数,包括其语法、工作原理和返回值。

什么是 C++ STL 中的 Set?

C++ STL 中的 Set 是容器,其元素必须唯一且按一定顺序排列。Set 中的元素必须唯一,因为元素的值标识了该元素。一旦将值添加到 Set 容器中,就不能再修改该值,尽管我们仍然可以删除或添加 Set 中的值。Set 使用二叉搜索树。

什么是 set::equal_range()?

equal_range() 函数是 C++ STL 中的内置函数,在头文件中定义。此函数返回 Set 容器中包含作为函数参数传递的值的范围。Set 包含所有唯一值,因此在找到的范围内等效的值将是单个值。如果容器中不存在该值,则范围将为零,两个迭代器都指向第一个位置。

语法

Set1.equal_range(const type_t& value);

参数

此函数接受一个参数,即要查找的元素。

返回值

此函数返回一个pair,或者可以说是一个迭代器范围,从容器的下界开始到容器中要查找的元素结束。

示例

Input: set<int> myset = {10, 20, 30, 40};
Output: lower bound of 30 is 30

示例

在线演示

#include <bits/stdc++.h>
using namespace std;
int main(){
   set<int> mySet;
   mySet.insert(10);
   mySet.insert(20);
   mySet.insert(30);
   mySet.insert(40);
   mySet.insert(50);
   cout<<"Elements before applying range() Function : ";
   for (auto i = mySet.begin(); i != mySet.end(); i++)
      cout << *i << " ";
   auto i = mySet.equal_range(30);
   cout<<"\nlower bound of 30 is "<< *i.first;
   cout<<"\nupper bound of 30 is "<< *i.second;
   i = mySet.equal_range(40);
   cout<<"\nlower bound of 40 is " << *i.first;
   cout<<"\nupper bound of 40 is " << *i.second;
   i = mySet.equal_range(10);
   cout<<"\nlower bound of 10 is " << *i.first;
   cout<<"\nupper bound of 10 is " << *i.second;
   return 0;
}

输出

如果运行以上代码,则会生成以下输出:

Elements before applying range() Function : 10 20 30 40 50
lower bound of 30 is 30
upper bound of 30 is 40
lower bound of 40 is 40
upper bound of 40 is 50
lower bound of 10 is 10
upper bound of 10 is 20

更新于:2020年3月5日

浏览量:194

启动您的职业生涯

完成课程获得认证

开始学习
广告