คำอธิบาย
ฟังก์ชัน equal_range() ใน C++ STL map คืนค่าเป็น pair ของ iterator ที่กำหนดช่วง (range) ของ key ที่เท่ากับค่าที่กำหนด เนื่องจาก map ไม่อนุญาต key ซ้ำ ช่วงนี้จะมีขนาด 0 หรือ 1
first= lower_bound(key) (iterator ตัวแรกที่ >= key)second= upper_bound(key) (iterator ตัวแรกที่ > key)
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int main() {
map<int, int> mp;
mp.insert({4, 30});
mp.insert({1, 40});
mp.insert({6, 60});
auto range = mp.equal_range(1);
cout << "Lower bound: " << range.first->first << ":" << range.first->second << endl;
cout << "Upper bound: " << range.second->first << ":" << range.second->second << endl;
// ถ้า key ไม่อยู่ใน map
auto range2 = mp.equal_range(2);
cout << "Key 2 not found: " << (range2.first == range2.second ? "true" : "false") << endl;
return 0;
}
เอาต์พุต
Lower bound: 1:40 Upper bound: 4:30 Key 2 not found: true