C++ 在类中使用向量

C++ 在类中使用向量,c++,vector,C++,Vector,我试图实现一个heap类,但无法在其中使用vector #include <vector> template <typename T> class Heap { public: Heap() { current_size = 0; } private: int current_size; std::vector<T> array; }; 当我试图运行这个程序时,它崩溃了。project2.exe已停止工作 编辑:

我试图实现一个heap类,但无法在其中使用vector

#include <vector>

template <typename T>
class Heap {

public:
    Heap() {
    current_size = 0;
    }
private:
    int current_size;
    std::vector<T> array;
};
当我试图运行这个程序时,它崩溃了。project2.exe已停止工作

编辑:

主要功能:

int main(int argc,char *argv[]) {

    Heap<int> events;
}
project2.exe已停止工作。是一个模糊的错误,但肯定是在运行时发生的。这对您或程序的用户没有帮助,因此您需要实现更好的错误处理

当使用向量时,运行时错误通常发生在错误分配std::bad_alloc异常和访问向量中不存在std::out_of_range异常的元素。捕获这些异常以防止程序崩溃、内存泄漏和显示project2.exe已停止工作。错误消息

通过在主函数中放置try-catch块,可以捕获程序中的所有异常:

int main(int argc, char *argv[])
{
    try
    {
        // put all your code here
        Heap<int> events;
    }
    catch (const std::exception& x)
    {
        // all std exceptions are caught here
        std::cerr << x.what() << '\n';
    }
}
如果您的代码包含vector[subscript],它将不会抛出std::out_of_range异常。如果不需要对性能至关重要,请将其替换为vector.atsubscript以引发异常


请记住,错误处理不会解决问题,但可以为您提供导致解决方案的关键提示。此外,还应该考虑使用调试器。他们会告诉您是哪行代码导致程序停止工作。

这不是您的整个程序,是吗?上面的代码不应该构建到可执行文件中,例如,因为它缺少主功能。虽然我会在成员初始值设定项列表中初始化当前的_大小,但您发布的代码看起来还可以,假设array.size不合适。。。。问题一定出在你没有发布的代码中。@enhzflep-我想在互联网上没有什么是不言而喻的。@enhzflep-这不是一个真正的问题。这是为了提示他发布程序的其余部分。在你被否决之前,添加你能想出的编译、运行和演示问题的最少代码。这意味着您必须做一些工作来删除不相关的部分。如果你幸运的话,当你这么做的时候,你会自己发现问题。