gpt4 book ai didi

C++ vector 操作

转载 作者:行者123 更新时间:2023-11-27 23:29:50 25 4
gpt4 key购买 nike

我正在尝试删除 vector 中最大的 int 元素并将其插入到新 vector 中。我已经有一个 int 表示 vector 中的最高数字,一个表示该数字的位置。

这是我的代码:

vector2.push_back(highest);
vector1[highestpos] = vector1[vector1.size()-1];
vector1[vector1.size()-1] = highest;
vector1.pop_back();

但是它返回一个错误。这段代码有什么问题吗?

编辑::::::这里是我的更多代码。我得到的错误是一个断言错误,表明 vector 下标超出范围。

while(vector1.size() > 0)
{
highest = 0;

for (int i = 0; i < vector1.size(); i++)
{

if (vector1[i] > highest)
{
highest = vector1[i];
int highestpos = i;
}
}

vector2.push_back(highest);
vector1[highestpos] = vector1[vector1.size()-1];
vector1[vector1.size()-1] = highest;
vector1.pop_back();
}

最佳答案

根据编辑,问题是 highestpos在循环内部,i 的值已分配,与 highestpos 不同在循环之外。

试试std::cout << highestpos << '\n';就在vector1[highestpos] = ...之前

(使用max_element()而不是手写循环来确定最大值和vector1.erase()从 vector 中删除可能也有帮助,尽管删除可能确实比swap+pop_back效率低)

关于C++ vector 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228067/

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