ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน multiset::equal_range() ใน C++ STL
มัลติเซ็ตใน C++ STL คืออะไร
ชุดหลายชุดคือคอนเทนเนอร์ที่คล้ายกับชุดคอนเทนเนอร์ ซึ่งหมายความว่าจะเก็บค่าต่างๆ ในรูปแบบของคีย์เหมือนกับชุดในลำดับเฉพาะ
ในชุดหลายชุด ค่าจะถูกระบุเป็นคีย์เหมือนกับชุด ความแตกต่างหลัก ระหว่าง multiset และ set คือ ชุดมีคีย์ที่แตกต่างกัน ซึ่งหมายความว่าไม่มีสองคีย์ที่เหมือนกัน ใน multiset สามารถมีค่าคีย์เดียวกันได้
คีย์หลายชุดใช้ในการสร้างแผนผังการค้นหาแบบไบนารี
มัลติเซ็ต::equal_range() คืออะไร
ฟังก์ชัน multiset::equal_range() เป็นฟังก์ชัน inbuilt ใน C++ STL ซึ่งกำหนดไว้ในไฟล์ส่วนหัว
ฟังก์ชันนี้จะคืนค่าขอบเขตของช่วงซึ่งรวมถึงองค์ประกอบทั้งหมดในคอนเทนเนอร์เท่ากับพารามิเตอร์ที่เรากำหนดให้กับฟังก์ชัน
ไวยากรณ์
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