【发布时间】:2011-06-03 14:00:59
【问题描述】:
我正在尝试删除向量中最大的 int 元素并将其插入到新向量中。我已经有一个表示向量中最高数字的 int 和一个表示该数字位置的 int。
这是我的代码:
vector2.push_back(highest);
vector1[highestpos] = vector1[vector1.size()-1];
vector1[vector1.size()-1] = highest;
vector1.pop_back();
但它返回一个错误。这段代码有什么问题吗?
编辑::::::这里有更多我的代码。我得到的错误是一个断言错误,说向量下标超出范围。
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();
}
【问题讨论】:
-
it returns an error可能意味着很多事情。编译器错误?运行时错误?什么是编译器或运行时错误? -
好像少了一堆代码。
-
我没有发现任何问题...可能是
highestpos。确保在vector1.size() == 0时不执行该代码 -
错误是什么?你确定
highestpos是正确的吗?此外,您不需要将highest放入vector1 中,这样您就可以再次将其弹出。只需将原始值保留在那里即可。 -
你为什么不使用 max_element() ?使用可用的算法。