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