所以我最近从 Java 切换到 C++,并且正在构建一个选择排序示例,以此来更好地了解 Vector 库。但是,当我尝试运行该程序时,没有构建错误,但有两个调试错误。
点击忽略后,我收到一大堆这样的警告:
我对 C++ 还是很陌生,所以我不知道是什么导致了这些错误,我们将不胜感激。这是我写的代码,提前谢谢你。如果您想了解更多信息,请询问,我会提供所需信息。
#include <stdlib.h>
#include <vector>
#include <iostream>
using namespace std;
int findLowest(vector<int> in) {
int min = in[0];
int index = 0;
for (int i = 1; i < in.size(); i++) {
if (in[i] < min) {
min = in[i];
index = i;
}
}
return index;
}
void printVector(vector<int> in) {
vector<int>::iterator v = in.begin();
while (v != in.end()) {
cout << *v << endl;
v++;
}
}
vector<int> selectionSort(vector<int> toSort) {
vector<int> temp;
for (int i = 0; i < toSort.size(); i++) {
int tempIndex = findLowest(toSort);
temp.push_back(toSort[tempIndex]);
temp.erase(temp.begin() + tempIndex);
}
return temp;
}
vector<int> randomArray(int size) {
vector<int> temp;
for (int i = 0; i < size; i++) {
temp.push_back(rand() % 100);
}
return temp;
}
void main() {
vector<int> toSort = randomArray(20);
printVector(toSort);
vector<int> sorted = selectionSort(toSort);
printVector(sorted);
cin.ignore();
}
最佳答案
单击 break 以便它可以向您显示程序遇到错误的位置。
双击未变灰的行(您的代码)。
然后您将看到您的代码,您可以添加一些数据 View (或添加 watch ,或者只需将鼠标悬停):
从这里您可以看到 temp
vector 的大小为 1,但是 tempIndex
变量的值为 3,这意味着对 的调用如错误消息所述,erase()
超出范围。
关于c++ - Visual Studio 在此选择排序上抛出大量调试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41471846/