gpt4 book ai didi

c++ - 从 vector 中删除元素时出错

转载 作者:行者123 更新时间:2023-11-28 02:48:59 25 4
gpt4 key购买 nike

我正在尝试执行一种方法,我必须从整数 vector 中删除一个数字,并将该数字作为参数传递。我现在遇到的问题是,当我尝试删除连续位置中的相同数字时,只有其中一个被删除。

例如:

vector = (1, 2, 2, 3, 4, 5) 我想去掉数字“2”,结果是:

vector = (1, 2, 3, 4, 5)

但如果数字不在连续的位置,该方法工作正常:

vector = (1, 2, 3, 2, 4, 5) ---> 删除“2”

vector = (1, 3, 4, 5)

我的代码是这样的:

void deleteNumber(int n, vector<int> &numbers)
{
bool hasEntered = false;

int counter = 0;
vector<int> deletedNumbers;

for(unsigned i = 0; i < numbers.size(); i++)
{
if(numbers[i] != n)
{
counter++;
}

else
{
counter = 0;
int counter2 = 0;
bool deleted = false;

for(unsigned j = 0; j < deletedNumbers.size() && deleted == false; j++) // Check if a number has been deleted before
{
if(deletedNumbers[j] != n)
{
counter2++;
}

else
{
deleted = true;
counter2 = 0;
}
}

if(counter2 == (int) deletedNumbers.size()) // Remove the number if it hasn't been removed
{
deletedNumbers.push_back(n);
for(unsigned k = 0; k<numbers.size(); k++)
{
if(numbers[k] == n)
numbers.erase(numbers.begin()+k);
}

counter2 = 0;
hasEntered = true;
}
}
}
}

我认为错误可能是在最后一个for的条件下,我最终删除了数字。

计数器用于确定是否已找到元素。而且该方法还必须检查该项目之前是否已被删除。

有什么不明白的可以问我

提前致谢:)

最佳答案

你可以尝试这样的事情:

void deleteNumber(int n, vector<int> &numbers)
{
vector<int>numbers_without_n;
for(unsigned i = 0; i < numbers.size(); i++)
if(numbers[i] != n)
numbers_without_n.push_back(numbers[i]);

numbers = numbers_without_n;
}

关于c++ - 从 vector 中删除元素时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23484164/

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