2017-08-21 30 views
0

我正在試圖製作一個涉及向量的程序,但它看起來好像向量根本不起作用。這是我的程序的樣子:在C++中聲明一個向量引發運行時錯誤

#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麥格拉思從C++編程第四版的語言。

圖片:

(image)

+0

您的C++編譯器安裝已損壞。無論問題是什麼,你都必須自己解決。這與矢量或任何與C++相關的東西都沒有關係,只是你的特定編譯器安裝。 –

+2

你的編譯器不會抱怨'thing'?我懷疑你沒有向我們展示你的真實代碼。 – Beta

+0

感謝您指出這一點;我隨機決定使用查找/替換工具在我的源代碼中將'thing'更改爲'vec',並在問題中手動更改它,但忽略了該聲明。 – Turnovus

回答

0

請參閱http://en.cppreference.com/w/cpp/container/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; 
     }