Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

deque::erase

公众成员函数  <deque>

C++98:
iterator erase (iterator position);
iterator erase (iterator first, iterator last);
删除元素
从deque容器中移除单个元素(position)或一段元素([first,last))。

这会通过删除元素的数量来减少容器的大小,这些元素将被销毁。

双端队列设计用于在序列的末尾或开头高效地删除(和插入)元素。 对其他位置的移除通常比list或forward_list容器的移除效率低。

☲  参数


position
指向要从deque容器中移除的单个元素的迭代器。
成员类型iterator和const_iterator是指向元素的随机访问迭代器类型。
first, last
指定deque容器中要删除的范围的迭代器:[first,last)。
例如,range包含first和last之间的所有元素,包括first所指向的元素, 但不包括last所指向的元素。
成员类型iterator和const_iterator是指向元素的随机访问迭代器类型。

☉  返回值



一个迭代器,指向函数调用所擦除的最后一个元素后面的元素的新位置。 如果操作删除了序列中的最后一个元素,则表示容器的end。

成员类型迭代器是一种指向元素的随机访问迭代器类型。

☣  示例



// erasing from deque
#include <iostream>
#include <deque>

int main ()
{
  std::deque<int> 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<int>::iterator it = mydeque.begin(); it!=mydeque.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

输出:
mydeque contains: 4 5 7 8 9 10

✥ 复杂度



与被删除元素的数量成线性关系(析构)。 另外,根据特定的标准库实现,从位置到deque的一个端点之间的元素数量最多会增加一个线性时间。

☣ 迭代器的有效性



如果删除操作包含序列中的最后一个元素,则end迭代器以及指向被删除元素的迭代器、指针和引用将失效。
如果删除包含第一个元素但不包含最后一个元素,则只有指向被删除元素的元素才会失效。
如果发生在deque容器中的任何其他位置,所有与该容器相关的迭代器、指针和引用都会失效。

⇄ 数据竞争


容器被修改;
如果删除发生在序列的开头或结尾,则只修改被删除的元素(请参阅上面的迭代器有效性)。
如果发生在其他地方,则访问或修改元素是不安全的。

☂ 异常安全性



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

🍄  另请参阅



deque::insert 插入元素(公众成员函数)
deque::pop_back 删除最后一个元素 (公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图