pair<const_iterator,const_iterator> equal_range (const value_type& val) const; pair<iterator,iterator> equal_range (const value_type& val);
set
類模板中的公共成員函數。
返回值匹配給定搜索值的元素組成的範圍。
因爲 set
容器中所有元素都是唯一的,所以返回的範圍中最多隻有一個元素。
如果沒有發現匹配的元素,返回範圍的長度將爲 0,且首尾兩個迭代器都將指向按內部比較對象的排序規則排在 val 之後的第一個元素。
如果傳遞給容器內部比較對象的兩個元素使得比較對象返回 false
,且該特性是自反的(Reflexive)(即兩個參數不管以什麼順序傳遞給比較對象,都返回 false
),那麼兩個主鍵等價。
val:需要被搜索的值。
成員類型 val_type
是存儲在當前容器中的元素的類型,作爲 set
實例化時第一個模板參數(T)的別名而存在。
返回
返回一個二元組。
該二元組由兩個指向容器中元素的迭代器組成,第一個迭代器與 set::lower_bound
傳入 val 返回的迭代器相同,第二個迭代器與 set::upper_bound
傳入 val 返回的迭代器相同。
如果 set
對象是 const
限定的,那麼函數返回的二元組由 const_iterator
組成,否則返回的二元組由 iterator
組成。
成員類型 iterator
及 const_iterator
是指向容器中元素的雙向迭代器的類型。
- ClassFoo 編輯於
#include <set> #include <iostream> namespace ClassFoo{ void SetEqualRangeExample1() { using namespace std; set<int> foo1; pair<set<int>::iterator,set<int>::iterator> it; foo1.insert(1); foo1.insert(3); foo1.insert(6); foo1.insert(9); foo1.insert(12); it = foo1.equal_range(6); cout << "foo1.equal_range(6):" << *(it.first) << " " << *(it.second) << endl ; it = foo1.equal_range(7); cout << "foo1.equal_range(7):" << *(it.first) << " " << *(it.second) << endl ; } } int main( ) { ClassFoo::SetEqualRangeExample1(); return 0; }
輸出: