【发布时间】:2016-03-05 01:24:36
【问题描述】:
我一直在寻找解决方案,我似乎正在修复他们的所有问题,但我的仍然无法正常工作。
以下代码显示来自名为 Creature 的类的向量,对向量进行排序,然后显示排序后的向量。
// displaying the unsorted vector
for (int i = 0; i < MAX_NO_CREATURES; i++)
{
if (creatures[i].getAlive() != 0) // checking to see if a creature exists
{
for (unsigned int j = 0; j < creatures[i].getAvaFood().size(); j++)
{
cout << creatures[i].getAvaFood()[j] << " ";
}
}
}
//sorting the vector
for (int i = 0; i < MAX_NO_CREATURES; i++)
{
if (creatures[i].getAlive() != 0) // checking to see if a creature exists
{
creatures[i].bubbleSort(creatures[i].getAvaFood()); // calling a sorting function from creatures[i] passing in the relevant vector (its own.. wait what?)
}
}
cout << endl;
// displaying the sorted vector
for (int i = 0; i < MAX_NO_CREATURES; i++)
{
if (creatures[i].getAlive() != 0) // checking to see if a creature exists
{
for (unsigned int x = 0; x < creatures[i].getAvaFood().size(); x++)
{
cout << creatures[i].getAvaFood()[x] << " ";
}
}
}
当我在错误窗口上单击重试时,Visual Basic 将我带到生物类中的这一行。特别是 IF 语句。
void Creature::bubbleSort(vector<int> &v)
{
bool swapped = true;
int temp;
while (swapped)
{
swapped = false;
for (unsigned int i = 0; i < v.size(); i++)
{
if (v[i] > v[i + 1])
{
temp = v[i];
v[i] = v[i + 1];
v[i + 1] = temp;
swapped = true;
}
}
}
}
【问题讨论】:
-
v[i+1]在i == v.size() - 1时无效
标签: c++ function class loops vector