c++ - Visual Studio 在此选择排序上抛出大量调试错误

标签 c++ visual-studio vector

所以我最近从 Java 切换到 C++,并且正在构建一个选择排序示例,以此来更好地了解 Vector 库。但是,当我尝试运行该程序时,没有构建错误,但有两个调试错误。

enter image description here

enter image description here

点击忽略后,我收到一大堆这样的警告:

enter image description here

我对 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 以便它可以向您显示程序遇到错误的位置。

它将显示调用堆栈: enter image description here

双击未变灰的行(您的代码)。

然后您将看到您的代码,您可以添加一些数据 View (或添加 watch ,或者只需将鼠标悬停): enter image description here

从这里您可以看到 temp vector 的大小为 1,但是 tempIndex 变量的值为 3,这意味着对 的调用如错误消息所述,erase() 超出范围。

关于c++ - Visual Studio 在此选择排序上抛出大量调试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41471846/

相关文章:

git - 如何使 git push origin --force ;在 Visual Studio 团队资源管理器中

r - 向量中仅某些元素的 N 种排列

c++ - 转换和模板类型参数

c++ - openCV警告组件数据类型不匹配

c++ - 声明一个大小为 std::streamoff 的数组

c++ - reinterpret_cast 为相同类型

c# - 获取 "type or namespace name could not be found"但一切似乎都正常?

c++ - 在 Visual Studio linux c++ 项目中包含任何 STL 库时出现 "128-bit floating-point types are not supported in this configuration"错误

c++ - 在基类中引用不同大小的 std::array 而不是 std::array

c++ - 调整大小后的 vector 容量