C++ STL 中的 multiset equal_range() 函数


在本文中,我们将讨论 C++ STL 中 multiset::equal_range() 函数的工作原理、语法和示例。

什么是 C++ STL 中的 multiset?

Multiset 与 set 容器类似,这意味着它们以键的形式存储值,就像 set 一样,并以特定的顺序存储。

在 multiset 中,值与 set 一样被识别为键。multiset 和 set 之间的主要区别在于,set 具有不同的键,这意味着没有两个键是相同的,而在 multiset 中,可以存在相同的键值。

Multiset 键用于实现二叉搜索树。

什么是 multiset::equal_range()?

multiset::equal_range() 函数是 C++ STL 中的一个内置函数,它在 <set> 头文件中定义。equal_range() 获取 multiset 容器中相等元素的范围。

此函数返回一个范围的边界,该范围包括容器中所有等于我们传递给函数的参数的元素。

语法

ms_name.equal_range(value_type& val);

参数

该函数接受一个参数:

  • val - 我们在容器中搜索其范围的值。

返回值

此函数返回一对下界和上界,其值等于

示例

输入

std::multiset<int> mymultiset = {1, 2, 2, 3, 4};
mymultiset.equal_range(2);

输出

2 2

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
int main(){
   multiset<int> check;
   check.insert(10);
   check.insert(20);
   check.insert(30);
   check.insert(40);
   check.insert(50);
   check.insert(60);
   check.insert(70);
   check.insert(80);
   cout<<"Elements are: ";
   for (auto i = check.begin(); i!= check.end(); i++)
      cout << *i << " ";
   //lower bound and upper bound
   auto i = check.equal_range(30);
   cout<<"\nThe lower bound of 30 is " << *i.first;
   cout<<"\nThe upper bound of 30 is " << *i.second;
   // last element
   i = check.equal_range(20);
   cout<<"\nThe lower bound of 20 is " << *i.first;
   cout<<"\nThe upper bound of 20 is " << *i.second;
   i = check.equal_range(80);
   cout<<"\nThe lower bound of 80 is " << *i.first;
   cout<<"\nThe upper bound of 80 is " << *i.second;
   return 0;
}

输出

Elements are: 10 20 30 40 50 60 70 80
The lower bound of 30 is 30
The upper bound of 30 is 40
The lower bound of 20 is 20
The upper bound of 20 is 30
The lower bound of 80 is 80
The upper bound of 80 is 8

更新于: 2020-04-17

134 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告