• C++ Reference: Standard C++ Library reference: Containers: deque: deque: erase


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

    公有成员函数 
    <deque>
    std::deque::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 );
    删除元素
    deque容器中删除单个元素(position)或一系列元素([first,last))。
    这通过删除元素的数量有效地减少了容器的size
    deque的设计目的是在序列的结束处或开始处高效地删除(和插入)元素。在其他位置上的删除通常比在listforward_list容器中更低效。

    形参 
    position 
    指向要从deque中删除的单个元素的iterator。
    成员类型iterator和const_iterator是指向元素的随机访问iterator(random access iterator)类型。
    first,last
    deque中指定要删除的范围的iterator:[first,last)。也就是说,范围包括firstlast之间的所有元素,包括first指向的元素,但不包括last指向的元素。
    成员类型iterator和const_iterator是指向元素的随机访问iterator(random access iterator)类型。

    返回值
    一个iterator,指向被函数调用删除的最后一个元素后面的元素的新位置。如果操作删除了序列中的最后一个元素,则返回值为容器结束(container end)。
    成员类型iterator是指向元素的随机访问iterator(random access iterator)类型。

    用例
    // erasing from deque
    #include
    #include

    int main ()
    {
      std::deque mydeque;

      // set some values (from 1 to 10)
      for (int i=1; i<=10; i++) mydeque.push_back(i);

      // erase the 6th element
      mydeque.erase (mydeque.begin()+5);

      // erase the first 3 elements:
      mydeque.erase (mydeque.begin(),mydeque.begin()+3);

      std::cout << "mydeque contains:";
      for (std::deque::iterator it = mydeque.begin(); it!=mydeque.end(); ++it)
        std::cout << ' ' << *it;
      std::cout << '\n';

      return 0;
    }
    输出:

    复杂度
    在删除(析构)元素的数量上是线性的。另外,根据特定的库实现,根据positiondeque结束之一之间的元素数量增加一个额外的线性时间。

    iterator的有效性
    如果删除操作包含序列中的最后一个元素,则结束iterator(end iterator)和指向被删除元素的iterator、指针和reference都将失效。
    如果删除包含first的元素但不包含last的元素,则只有引用被删除元素的元素无效。
    如果它发生在deque的其他地方,所有与容器相关的iterator、指针和reference都将失效。

    数据竞争
    完成容器的修改。
    如果删除发生在序列的开始或结束,则只修改被删除的元素(请参阅上面的iterator的有效性)。
    如果它发生在其他任何地方,则访问或修改元素是不安全的。

    异常安全
    如果被删除的元素包括容器中的第一个或最后一个元素,则不会抛出异常(无抛出保证)。
    否则,容器将保证以有效状态结束(基本保证):在重定位元素时复制或移动元素可能会抛出。
    无效的范围会产生未定义的行为。 

  • 相关阅读:
    DSPE PEG Azide, DSPE-PEG-N3;磷脂聚乙二醇叠氮
    jenkins容器内配置python项目运行环境(Python3.7.3)
    Dubbo-admin安装与测试
    helm 部署golang应用
    Spring Cloud GateWay简介
    一文深入springboot,springboot的实战实践文档(PDF)
    别跟客户扯细节
    计算机视觉40例之案例02人脸打码与解码
    前端培训丁鹿学堂:前端面试跨域之jsonp原理解析
    CC1,3,6回顾
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/127669203