• 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的有效性)。
    如果它发生在其他任何地方,则访问或修改元素是不安全的。

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

  • 相关阅读:
    node爬取掘金/csdn文章
    ERROR: ld.so: object ‘/$LIB/libonion.so‘ from /etc/ld.so.preload
    环境搭建-初识jsp
    JSX 中使用 js 表达式
    Spring框架及创建Spring项目
    selenium——chromdriver版本请及时更新
    快解析的ERP远程管理解决方案
    Multiple CORS header ‘Access-Control-Allow-Origin‘ not allowed
    使用Idea简单搭建springcloud项目
    vector使用与简单实现
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/127669203