从向量中移除元素,而不移除之后的元素
Removing an element from the vector without removing the elements after
来自Java并使用ArrayList类让我在学习C++等价物(Vectors)时感到非常沮丧。
我正在编写一个函数,它从int向量中删除给定的某个int。有一段时间,我不明白为什么它会导致分割错误。在看了文档后,我意识到。擦除也会删除被擦除的元素之后的任何元素。这绝对不是我想做的,所以我有点不知道如何从向量中只移除一个元素,而不移除之后的元素。
我目前拥有的导致分段故障的功能:
void remove(int n){
for(int a=0; a<list.size(); a++){
if(list.at(a)==n){
list.erase (list.begin()+(n-1));
cout << n << " has been erased" << endl;
break;
}
}
}
您正在寻找n
作为元素,但也将其用作索引。我不认为这是你想要的。
如果用a
替换(n-1)
,它应该可以工作:
list.erase(list.begin()+a);
使用find
和erase
:移除单个元素的替代方法
#include <algorithm>
//...
void removeOne(int n){
vector<int>::iterator found = std::find(list.begin(), list.end(), n) ;
if (found!=list.end())
list.erase(found);
}
std::vector<int> v;
// fill it up somehow
v.erase(std::remove(v.begin(), v.end(), 99), v.end());
// really remove all elements with value 99
您将需要iterator erase ( iterator first, iterator last );
请看这里。(http://www.cplusplus.com/reference/stl/vector/erase/)
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 我有一个嵌套数组,它由另一个数组中的元素组成,这些元素分组为2.之后,我想显示每个元素的属性
- 在字符串的每个元素(不使用弦乐)的每个元素之后插入字符
- 为什么要指向数组或向量中最后一个元素之后的内存位置
- 矢量元素如何在矢量 std::move 之后保留其原始地址
- 在x元素之后,从QT中删除x元素之后的文件夹中的项目
- 如何在迭代器位置之后插入元素
- 如何有效地在元素之前和之后搜索关键短语
- 在链表中的specifeec元素之后添加元素,并删除第一个元素
- 从向量中移除元素,而不移除之后的元素
- Min-HeapSort在~350个元素之后不排序
- 在从循环中动态获得的值之后向数组中添加一个元素
- 为什么我指向 std::vector 元素的指针在 push_back() 之后更改了其值?
- 我应该在知道我将使用多少个元素之前还是之后定义向量中的元素数?
- C++在.size()之后丢失向量元素
- 在声明数组之后,所有元素都以某种方式成为最后一个元素
- 为什么在编组之后,数组中只有一个元素包含值