C++ Reference: Standard C++ Library reference: Containers: map: map: erase
创始人
2024-04-24 08:10:52
0

C++官网参考链接:https://cplusplus.com/reference/map/map/erase/

公有成员函数 

std::map::erase
C++98
(1)    void erase (iterator position);
(2)    size_type erase (const key_type& k);
(3)    void erase (iterator first, iterator last);
C++11
(1)    iterator  erase (const_iterator position);
(2)    size_type erase (const key_type& k);
(3)    iterator  erase (const_iterator first, const_iterator last);
删除元素
从map容器中删除单个元素或元素范围([first,last))。
这通过删除元素的数量有效地减少了容器的size。

形参 
position 
指向要从map中删除的单个元素的iterator。
这应指向一个有效和可解引用的元素。
成员类型iterator和const_iterator是指向元素的双向iterator(bidirectional iterator)类型。
k
要从map中删除的元素的键。
成员类型key_type是容器中元素的类型,在map中定义为其第一个模板形参(Key)的别名。
first,last 
在map容器中指定要删除的范围的iterator:[first,last)。也就是说,范围包括first和last之间的所有元素,包括first指向的元素,但不包括last指向的元素。
成员类型iterator和const_iterator是指向元素的双向iterator(bidirectional iterator)类型。

返回值
对于基于键的版本(2),函数返回被删除的元素数量。
成员类型size_type是无符号整型。
C++98
其他版本不返回值。
C++11
其他版本返回一个iterator,指向最后一个被删除的元素后面的元素(或者map::end,如果最后一个元素被删除)。
成员类型iterator是指向元素的双向iterator(bidirectional iterator)类型。

用例
// erasing from map
#include
#include

int main ()
{
  std::map mymap;
  std::map::iterator it;

  // insert some values:
  mymap['a']=10;
  mymap['b']=20;
  mymap['c']=30;
  mymap['d']=40;
  mymap['e']=50;
  mymap['f']=60;

  it=mymap.find('b');
  mymap.erase (it);                   // erasing by iterator

  mymap.erase ('c');                  // erasing by key

  it=mymap.find ('e');
  mymap.erase ( it, mymap.end() );    // erasing by range

  // show content:
  for (it=mymap.begin(); it!=mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';

  return 0;
}
输出:

复杂度
对于第一个版本(erase(position)),平摊常量。
对于第二个版本(erase(val)),容器的size中的对数。
对于最后一个版本(erase(first,last)),first和last之间的距离中的线性。

iterator的有效性
指向被函数删除的元素的iterators、pointers和references将失效。
所有其他iterators、pointers和references都保持它们的有效性。

数据竞争
完成容器的修改。
删除的元素被修改。同时访问其他元素是安全的,但迭代容器中的范围就不安全了。

异常安全
除非容器的比较对象(comparison object)抛出,否则此函数从不抛出异常(无抛出保证)。
否则,如果要删除单个元素,则在异常情况下容器中不会有任何更改(强保证)。
否则,保证容器以有效状态结束(基本保证)。
如果指定的position或范围无效,则会导致未定义的行为。 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...