C++ unordered_map刪除元素(erase刪除元素)詳解

2020-07-16 10:04:31
可以呼叫 unordered_map 的成員函數 erase() 來移除元素。引數可以是標識元素的一個鍵或是指向它的一個疊代器。當引數是鍵時,erase() 會返回一個整數,它是移除元素的個數,所以 0 表示沒有找到匹配的元素。當引數是疊代器時,返回的疊代器指向被移除元素後的元素。下面是一些範例:
auto n = people.erase ("Jim");// Returns 0 if key not found
auto iter = people.find ("May") ; // Returns end iterator if key not found
if(iter != people.end())
    iter = people.erase (iter) ;// Returns iterator for element after "May"
也可以移除指定的一個元素序列。例如:
//Remove all except 1st and last
auto iter = people.erase(++std:rbegin(people),--std:rend(people));
返回的疊代器指向被移除的最後一個元素的下一個位置。

成員函數 clear() 會移除所有的元素。當容器中沒有元素時,成員函數 empty() 返回 true。