gpt4 book ai didi

c++ - 从 vector 中删除元素而不删除之后的元素

转载 作者:行者123 更新时间:2023-11-30 01:27:22 26 4
gpt4 key购买 nike

来自 Java 并使用 ArrayList 类让我在尝试学习 C++ 等效项( vector )时感到很沮丧。

我正在编写一个函数,用于从整数 vector 中删除给定的某个整数。有一段时间我不明白为什么它会导致段错误。查看文档后,我意识到 .erase 还会删除被删除元素之后的所有元素。这绝对不是我想做的,所以我有点迷失了如何只从 vector 中删除一个元素而不删除之后的元素。

我目前拥有的导致段错误的功能:

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 作为元素,但也将其用作索引。我认为这不是您想要的。

如果将 (n-1) 替换为 a,它应该可以工作:

        list.erase(list.begin()+a);

删除单个元素的替代方法,使用 finderase :

#include <algorithm>
//...
void removeOne(int n){
vector<int>::iterator found = std::find(list.begin(), list.end(), n) ;
if (found!=list.end())
list.erase(found);
}

关于c++ - 从 vector 中删除元素而不删除之后的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9068014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com