在C ++中声明向量会引发运行时错误

时间:2017-08-21 00:43:29

标签: c++ gcc vector runtime

我试图创建一个涉及向量的程序,但似乎向量根本不起作用。这就是我的程序:

#include <vector>
#include <iostream>
using namespace std;

int main()
{
    vector <int> vec(7); //This is what throws the error
    cout << "First: " << vec.at(0) << endl;
    cout << "Last: " << vec.back() << endl;
    vec.push_back(296);
    cout << "New last: " << vec.back() << endl;
    cout << "Size: " << vec.size() << endl;
    return 0;
}

我使用GCC编译。编译不会抛出任何错误,但每次运行它都会崩溃。这是我得到的错误:

The procedure entry point_gxx_personality_v0 could not be located in the dynamic link library C:\[...]\Vectors.exe.

我通过MinGW安装了编译器和库,并且正在学习Mike McGrath的 C ++编程第四版中的语言。

图像:

(image)

1 个答案:

答案 0 :(得分:0)

请参阅http://en.cppreference.com/w/cpp/container/vector。 使用vector,你必须这样定义。 尝试一下,然后就不会有错误。此外,首先必须调用push_back函数,然后调用vec.at()或vec.back()。在您的示例中,向量中没有数据,因此会出现致命错误。

    #include <vector>
    #include <iostream>
    using namespace std;

        int main()
        {
            vector <int> vec;
            vec.push_back(296);
            vec.push_back(334);

            cout << "First: " << vec.at(0) << endl;
            cout << "Last: " << vec.back() << endl;

            cout << "New last: " << vec.back() << endl;
            cout << "Size: " << vec.size() << endl;
            return 0;
        }