std::set::equal_range


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 是指向容器中元素的雙向迭代器的類型。


#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;
}

輸出

foo1.equal_range(6):6 9
foo1.equal_range(7):9 9​



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章