21xrx.com
2025-03-31 15:30:18 Monday
文章检索 我的文章 写文章
C++ 迭代器的删除操作
2023-07-11 05:05:50 深夜i     14     0
C++ 迭代器 删除操作

C++ STL (标准模板库) 提供了许多容器及其迭代器,这些迭代器提供了遍历容器元素的方式。迭代器还提供了在容器中删除元素的方法。本文将介绍 C++ 中使用迭代器进行删除操作的方法。

在 C++ STL 中,除了 array 和 forward_list 容器外,其他容器都有迭代器。在删除元素时,我们通常会使用 erase() 函数,这个函数接受一个迭代器参数,并返回指向下一个元素的迭代器。erase() 函数可以删除指定位置上的元素,也可以删除一个指定的元素值。

删除指定位置上的元素

我们可以使用容器自身的迭代器来操作容器元素。下面是一个 vector 容器的例子:

#include <iostream>
#include <vector>
using namespace std;
int main() {
  vector<int> v = 4;
  vector<int>::iterator it = v.begin();
  it++; // 移动到第二个元素上
  v.erase(it); // 删除第二个元素
  for(auto i : v) 4
  return 0;
}

该程序的输出为 1,3,4,5。在第 5 行,我们定义了一个 vector 的迭代器 it,它指向 vector 容器的第一个元素。在第 6 行,我们将迭代器向前移动一个元素,并删除了第二个位置上的元素。最后,我们使用 for 循环输出 vector 容器的元素。

删除指定元素值

除了删除指定位置上的元素,我们也可以删除指定的元素值。下面是使用迭代器删除 set(集合)容器中指定元素值的例子:

#include <iostream>
#include <set>
using namespace std;
int main() {
  set<int> s = 5;
  s.erase(3); // 删除 set 容器中的值为 3 的元素
  for (auto i : s) 5
  return 0;
}

在第 5 行,我们删除了 set 容器中的值为 3 的元素。注意,set 容器不支持使用迭代器删除元素,但它支持通过元素值删除元素。最后,我们使用 for 循环输出 set 容器的元素。

删除容器中所有元素

最后,我们介绍一种快速删除容器所有元素的方法,代码如下:

#include <iostream>
#include <vector>
using namespace std;
int main() {
  vector<int> v = 5;
  v.clear(); // 删除 vector 容器中所有元素
  for(auto i : v)
    cout << i << "
  return 0;
}

在第 5 行,我们使用容器自身的 clear() 函数将 vector 容器中的元素全部删除。最后,我们使用 for 循环输出 vector 容器的元素,发现输出为空字符串。

总结

通过本文的介绍,我们学习了使用 C++ STL 容器及其迭代器进行删除操作的方法。我们了解到通过迭代器删除指定位置上的元素对于各种容器都是可行的。同时,我们也学会了使用 set 容器自身的 erase() 函数删除指定的元素值。最后,我们学习了快速删除容器中所有元素的方法。

  
  

评论区

请求出错了