C++ Deque::erase() 函数



C++ 的 std::deque::erase() 函数用于从 deque 中删除由迭代器或范围指定的元素。它可以删除给定位置的单个元素,也可以删除由两个迭代器定义的元素范围。删除后,它会相应地调整 deque 的大小。

此函数有两个多态变体:带位置版本或范围版本(您可以在下面找到所有变体的语法)。

语法

以下是 std::deque::erase() 函数的语法。

iterator erase (const_iterator position );
or
iterator erase (const_iterator first, const_iterator last );

参数

  • position - 指示指向要删除的单个元素的迭代器。
  • first, last - 指示指定 deque 中要删除元素的范围的迭代器。

position - 迭代器指向 deque 元素。

返回值

它返回一个指向元素新位置的迭代器。

异常

如果 position 无效,则会抛出异常(未定义行为)。

时间复杂度

此函数的时间复杂度为线性,即 O(n)

示例

让我们来看下面的例子,我们将使用位置版本来删除元素。

#include <iostream>
#include <deque>
int main()
{
    std::deque<char> a = {'A', 'B', 'C', 'D', 'E'};
    auto x = a.begin() + 2;
    a.erase(x);
    for (char num : a) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
    return 0;
}

输出

以上代码的输出如下:

A B D E 

示例

考虑另一种情况,我们将使用范围版本删除元素。

#include <iostream>
#include <deque>
int main()
{
    std::deque<int> a = {1, 22,321,4321,12345};
    auto x = a.begin() + 1;
    auto y = a.begin() + 4;
    a.erase(x, y);
    for (auto num : a) {
        std::cout << num << " ";
    }
    std::cout << "\n";
    return 0;
}

输出

以下是以上代码的输出:

1 12345
deque.htm
广告