C++ unordered_set查詢元素(find查詢元素)詳解

2020-07-16 10:04:31
呼叫 unordered_set 的 find() 會返回一個疊代器。這個疊代器指向和引數雜湊值匹配的元素,如果沒有匹配的元素,會返回這個容器的結束疊代器。例如:
std::pair<string, string> person {"John", "Smith"};
if(names.find(person) != std::end(names))
    std::cout << "We found " << person.first << " " << person.second << std::endl;
else
    std::cout << "There's no " << person.first << " " << person.second << std::endl;
這個容器是從上一節獲取的,這段程式碼會報告 John Smith 是存在的。如果不存在,find() 會返回這個容器的結束疊代器,並且會執行第二條輸出語句。

unordered_set 容器中的元素是無序的,因此也不需要成員函數 upper_bound() 和 lower_bound()。成員函數 equal_range() 會返回一個以疊代器為成員的 pair,它指定了和引數匹配的一段元素。

unordered_set 容器中只可能有一個匹配元素。如果沒有,兩個疊代器都是容器的結束疊代器。呼叫成員函數 count() 會返回容器中引數的出現次數。對於 unordered_set 只可能是 0 或 1。當想要知道容器中總共有多少元素時,可以呼叫成員函數 size()。如果容器中沒有元素,成員函數 empty() 會返回 true。