std::
unordered_map::erase
公众成员函数 <unordered_map>
by position (1) |
iterator erase ( const_iterator position );
|
by key (2) |
size_type erase ( const key_type& k );
|
range (3) |
iterator erase ( const_iterator first, const_iterator last );
|
删除元素
从
unordered_map容器中移除单个元素或一组元素(
[first,last))。
通过调用每个元素的析构函数删除元素,删除元素的数量有效地减少容器的大小。
☲ 参数
-
position
-
指向要从unordered_map中删除的单个元素的迭代器。
成员类型const_iterator是前向迭代器类型。
-
K
-
要删除元素的键。
成员类型key_type是容器中元素的类型。在unordered_map容器中,
定义为类的第一个模板形参(Key)的别名。
-
first, last
-
在unordered_map容器中指定要删除的范围的迭代器:[first,last)。即,范围包含first和last之间的所有元素,
包括first所指向的元素,但不包括last所指向的元素。
请注意,unordered_map容器不遵循任何特定的顺序来组织其元素,因此,范围删除的效果可能不容易预测。
成员类型const_iterator是前向迭代器类型。
☉ 返回值
版本(1)和(3)返回一个迭代器,指向最后一个被擦除的元素之后的位置。
版本(2)返回被擦除的元素的数量,在
unordered_map容器(具有唯一键值)中,
如果存在键值为
K的元素,则为
1(随后被删除),否则为
0。
成员类型
iterator是前向迭代器类型。
size_type是一种无符号整型。
☣ 示例
// unordered_map::erase
#include <iostream>
#include <string>
#include <unordered_map>
int main ()
{
std::unordered_map<std::string,std::string> mymap;
// populating container:
mymap["U.S."] = "Washington";
mymap["U.K."] = "London";
mymap["France"] = "Paris";
mymap["Russia"] = "Moscow";
mymap["China"] = "Beijing";
mymap["Germany"] = "Berlin";
mymap["Japan"] = "Tokyo";
// erase examples:
mymap.erase ( mymap.begin() ); // erasing by iterator
mymap.erase ("France"); // erasing by key
mymap.erase ( mymap.find("China"), mymap.end() ); // erasing by range
// show content:
for ( auto& x: mymap )
std::cout << x.first << ": " << x.second << std::endl;
return 0;
}
|
输出:
Russia: Moscow
Japan: Tokyo
U.K.: London
✥ 复杂度
平均情况:删除的元素数量呈线性(对于版本(1)和(2)是常数)。
最坏情况:容器大小呈线性。
☣ 迭代器的有效性
-
c++11
-
只有被移除元素的迭代器和引用才会失效。
其余的则未受影响。
-
c++14
-
只有被移除元素的迭代器和引用才会失效。
其余的则未受影响。
未被该操作删除的元素的相对迭代顺序被保留。
🍄 另请参阅
unordered_map::clear |
清除内容(公众成员函数) |
unordered_map::insert |
插入元素(公众成员函数) |
unordered_map::find |
获取元素迭代器(公众成员函数) |