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

map equal_range() ใน C++ STL

คำอธิบาย

ฟังก์ชัน 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