C++ Reference: Standard C++ Library reference: Containers: list: list: erase
创始人
2024-04-19 13:17:14
0

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

公有成员函数

std::list::erase
C++98
iterator erase (iterator position);
iterator erase (iterator first, iterator last);
C++11
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
删除元素
从list容器中移除单个元素(position)或元素范围([first,last))。
这通过删除元素的数量有效地减少了容器的size。
与其他标准顺序容器不同,list和forward_list对象被专门设计为在任何位置(甚至在序列中间)高效插入和删除元素。

形参 
position 
指向要从list中删除的单个元素的iterator。
成员类型iterator和const_iterator是指向元素的双向iterator(bidirectional iterator)类型。
first,last
在list中指定要删除的范围的iterator:[first,last)。也就是说,范围包括first和last之间的所有元素,包括first指向的元素,但不包括last指向的元素。
成员类型iterator和const_iterator是指向元素的双向iterator(bidirectional iterator)类型。

返回值
一个iterator,指向被函数调用删除的最后一个元素后面的元素。如果操作删除了序列中的最后一个元素,则此操作为容器结束(container end)。
成员类型iterator是指向元素的双向iterator(bidirectional iterator)类型。

用例
// erasing from list
#include
#include

int main ()
{
  std::list mylist;
  std::list::iterator it1,it2;

  // set some values:
  for (int i=1; i<10; ++i) mylist.push_back(i*10);

                                         // 10 20 30 40 50 60 70 80 90
  it1 = it2 = mylist.begin(); // ^^
  advance (it2,6);              // ^                             ^
  ++it1;                              //      ^                        ^

  it1 = mylist.erase (it1);   // 10 30 40 50 60 70 80 90
                                        //       ^                  ^

  it2 = mylist.erase (it2);   // 10 30 40 50 60 80 90
                                        //      ^                   ^

  ++it1;                             //            ^             ^
  --it2;                               //            ^        ^

  mylist.erase (it1,it2);     // 10 30 60 80 90
                                       //           ^

  std::cout << "mylist contains:";
  for (it1=mylist.begin(); it1!=mylist.end(); ++it1)
    std::cout << ' ' << *it1;
  std::cout << '\n';

  return 0;
}
输出: 
mylist contains: 10 30 60 80 90

复杂度
删除元素(销毁)的数量中的线性。

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

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

异常安全
如果position(或范围)有效,则函数永远不会抛出异常(无抛出保证)。
否则,它将导致未定义的行为。 

相关内容

热门资讯

安卓和windows系统生态,... 你有没有想过,为什么你的手机里装的是安卓系统,而你的电脑上却是Windows呢?这背后其实隐藏着两个...
怎样进入安卓原生系统,探索进入... 亲爱的读者,你是否曾好奇过,安卓手机里的那些隐藏功能,那些只有开发者才能触及的神秘世界?今天,就让我...
安卓系统修改软件权限,安卓系统... 你有没有想过,你的安卓手机里那些看似普通的软件,其实背后隐藏着不少秘密?没错,就是那些软件权限!今天...
ios系统和安卓系统操作区别,... 你有没有发现,手机里的世界真是五彩斑斓,各有各的风采呢?就拿我们平时离不开的iOS系统和安卓系统来说...
苹果系统与4安卓,一场操作系统... 你有没有发现,现在手机市场上,苹果系统和安卓系统就像是一对“欢喜冤家”,总是被拿来比较,仿佛谁赢了,...
安卓系统蓝牙怎么传送,安卓系统... 你有没有想过,手机里的照片、音乐、视频这些宝贝,怎么才能轻松地传给朋友呢?别急,今天就来给你揭秘安卓...
安卓系统卡的要死,安卓系统卡顿... 手机卡成这样,你有没有遇到过?安卓系统卡的要死,简直让人抓狂!今天,就让我来跟你聊聊这个让人头疼的问...
鸿蒙兼容安卓系统版本,跨越版本... 你知道吗?最近科技圈可是炸开了锅,华为的新动作让所有人都瞪大了眼睛。没错,就是那个鸿蒙兼容安卓系统版...
htc刷安卓6.0系统,体验流... 你有没有想过,给你的HTC手机升级到安卓6.0系统,让它焕发新生呢?想象你的手机瞬间变得流畅无比,各...
安卓系统剪映抖动,安卓系统下剪... 你有没有发现,在使用安卓手机的时候,有时候拍出来的视频会有点抖动呢?这可真是让人头疼的小问题。别急,...
安卓系统的存储分区,分区结构与... 你有没有发现,你的安卓手机越来越像一个巨大的百宝箱,里面装满了各种应用、照片、视频和音乐?但是,你知...
安卓系统收费消息,揭秘背后的真... 你知道吗?最近在安卓系统上,有个消息可是引起了不小的波澜呢!不少用户都在议论纷纷,这究竟是怎么回事呢...
安卓可删除系统文件系统,揭秘可... 你知道吗?在安卓手机的世界里,有一个神秘的角落,那就是系统文件系统。这些文件,看似默默无闻,却掌控着...
打球了吗安卓系统下载,畅享运动... 你有没有发现,最近手机上有个新玩意儿特别火?那就是安卓系统的下载,尤其是那些喜欢打球的小伙伴们,简直...
wp系统加入安卓阵营,携手安卓... 你知道吗?最近科技圈可是炸开了锅,因为一个大家伙——Windows Phone(简称wp系统)竟然宣...
红米2安卓系统原生系统,体验原... 你有没有想过,一部手机,除了拍照、玩游戏,还能给你带来怎样的惊喜呢?今天,就让我带你走进红米2的世界...
安卓音效系统级安装,从原理到实... 你有没有想过,你的安卓手机里那些动听的音乐、逼真的游戏音效,其实都是通过一个叫做“安卓音效系统级安装...
ivvi安卓系统恢复后,恢复流... 你有没有遇到过手机突然卡顿,或者不小心误删了重要文件,然后心情瞬间跌到谷底的情况?别担心,今天就来和...
智能电视安卓系统好吗,体验流畅... 亲爱的读者们,你是不是也和我一样,对智能电视的安卓系统充满了好奇?想知道它到底好不好用吗?那就跟着我...
安卓系统咋安装ins,安卓系统... 你有没有想过,在安卓手机上安装Instagram(简称ins)竟然也能变得如此简单?没错,就是那个让...