2013-05-22 34 views
-1

我在一段時間內還沒有完成C++。在一個向量中打印數據

我試圖得到一個矢量矢量打印數據。我得到以下錯誤:

Segmentation fault (core dumped)

我使用的是網上編譯運行的代碼。

#include <iostream>  // std::cout 
#include <algorithm> // std::for_each 
#include <vector>  // std::vector 

void myfunctiontwo (int i) { // function: 
    std::cout << ' ' << i; 
} 

void myfunction (std::vector<int> myvector) { // function: 
    for_each (myvector.begin(), myvector.end(), myfunctiontwo); 
} 

int main() { 
    // create a vector of vectors. 
    std::vector< std::vector<int> > myvector; 

    // add some data 
    myvector[0].push_back(10); 
    myvector[1].push_back(20); 
    myvector[2].push_back(30); 

    std::cout << "myvector contains:"; 
    for_each (myvector.begin(), myvector.end(), myfunction); 
    std::cout << '\n'; 

    return 0; 
} 
+1

它應該是std :: vector > myvector(3)? –

+1

@PoiXen:對,對不起,我是盲人。但是看看[漂亮打印機](http://stackoverflow.com/q/4850473/596781):-) –

回答

3

你的問題是推背:

myvector[0].push_back(10); 
myvector[1].push_back(20); 
myvector[2].push_back(30); 

myvector[0]myvector[1]myvector[2]還不存在的載體。如果你想myvector開始用3個向量,就可以像這樣創建:

std::vector< std::vector<int> > myvector(3); 
+1

更好的是,'myvector = {{10},{20},{30}}': - ) –

+0

@KerrekSB是的。不過,我懷疑他們從他們使用C++ 03格式化模板參數的方式。 –

0

,你可以從以下鏈接http://www.cplusplus.com/reference/vector/vector/operator [見] /,運算符[]是訪問元素 這是你不能用它插入元素的方式。插入對象使用分配,push_back和插入