Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชัน equal_range() หลายชุดใน C++ STL


ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน multiset::equal_range() ใน C++ STL

มัลติเซ็ตใน C++ STL คืออะไร

ชุดหลายชุดคือคอนเทนเนอร์ที่คล้ายกับชุดคอนเทนเนอร์ ซึ่งหมายความว่าจะเก็บค่าต่างๆ ในรูปแบบของคีย์เหมือนกับชุดในลำดับเฉพาะ

ในชุดหลายชุด ค่าจะถูกระบุเป็นคีย์เหมือนกับชุด ความแตกต่างหลัก ระหว่าง multiset และ set คือ ชุดมีคีย์ที่แตกต่างกัน ซึ่งหมายความว่าไม่มีสองคีย์ที่เหมือนกัน ใน multiset สามารถมีค่าคีย์เดียวกันได้

คีย์หลายชุดใช้ในการสร้างแผนผังการค้นหาแบบไบนารี

มัลติเซ็ต::equal_range() คืออะไร

ฟังก์ชัน multiset::equal_range() เป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว equal_range() รับช่วงขององค์ประกอบที่เท่ากันในคอนเทนเนอร์แบบหลายเซ็ต

ฟังก์ชันนี้จะคืนค่าขอบเขตของช่วงซึ่งรวมถึงองค์ประกอบทั้งหมดในคอนเทนเนอร์เท่ากับพารามิเตอร์ที่เรากำหนดให้กับฟังก์ชัน

ไวยากรณ์

ms_name.equal_range(value_type& 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