如何清除向量中的所有元素,除了C++中向量中的最后一个元素
Posted
技术标签:
【中文标题】如何清除向量中的所有元素,除了C++中向量中的最后一个元素【英文标题】:How to clear all elements in a vector except for the last one in a vector in c++ 【发布时间】:2021-09-06 14:49:43 【问题描述】:正如标题所说,我有一个包含 11 个整数元素的向量,范围从 1 到 11。我正在尝试使用 .erase() 函数清除向量中除最后一个之外的所有元素。我无法使用迭代器来执行此操作,因为它们清除了除第一个元素之外的所有元素。我尝试了很多来自互联网的解决方案,例如使用 .rbegin() 和 .rend() 但他们只是给了我一个错误。
下面是我的代码:-
#include <vector>
#include <iostream>
using namespace std;
vector<int> epos = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11;
vector<int>::iterator it1, it2;
int main()
it1 = epos.begin();
it2 = epos.end();
epos.erase(it1, it2);
for (int i=0; i<=epos.size(); i++)
cout << epos[i] << ' ';
return 0;
我仍然是 C++ 的初学者,如果有任何帮助,我将不胜感激!
【问题讨论】:
【参考方案1】:你快到了,使用这个语法:
// make sure we end up with a vector with one element in it.
// empty lists will stay empty
if(epos.size()>1)
epos.erase(epos.begin(), epos.end() - 1);
你知道你也可以像这样迭代容器吗?
for (auto v : epos)
cout << v << ' ';
它被称为基于范围的 for 循环,可以防止您在使用索引时出错
【讨论】:
以上是关于如何清除向量中的所有元素,除了C++中向量中的最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章