關於multiset的find函數


std::multiset 是含有 Key 類型對象有序集的容器。不同於 set ,它允許多個關鍵擁有等價的值。用關鍵比較函數 Compare 進行排序。搜索、插入和移除操作擁有對數復雜度。
與set一樣地,它有一個 find 函數,但是當容器內有多個重復元素時,它返回的到底是哪一個元素呢?cppreference.com 上對於 find 函數的解釋是“返回值:指向鍵等於 key 的元素的迭代器。”,並沒有說明到底是哪個元素。
使用 Visual Studio 打開頭文件 set,找到對應的 find 函數,代碼如下(部分):

iterator find(const key_type& _Keyval)
{	// find an element in mutable sequence that matches _Keyval
    iterator _Where = lower_bound(_Keyval);
    return (_Where == end()
        || _DEBUG_LT_PRED(this->_Getcomp(),
            _Keyval, this->_Key(_Where._Ptr))
                ? end() : _Where);
}

這里其實還看不出來,那只能實踐出真知了


經過多次實驗,find 函數返回的是等價的幾個元素中最先插入進容器的那個。這個結論同樣適用於G++編譯器。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM