2012-11-29 63 views
1

我想使用push_back從ifstream動態添加整數到2D矢量。基本上輸入將以類似被饋入到:輸入整數從fstream到2D矢量< vector<int>> C++

3 
20 3 
30 4 
40 5 
3 
50 6 
60 7 
70 8 

,我想自己(3,3- ..等)來讀取INT的,然後由自己創建對數字(整型的的2D矢量描述將會有多少對)。現在我正在使用getline()並將數字存儲在char中,然後再將它們轉換爲int,但我覺得這可能不理想。如果有人有任何想法,我將不勝感激。

+1

這是一個有點不清楚你想要什麼。您所描述的內容聽起來像3D矢量,「{{{20,3},{30,4},{40,5}},{{50,6},{60,7},{70,8 }}}'。或者你真的想要一個'vector >>? –

+0

@sftrabbit'vector >>'對我來說聽起來像三個維度,只有第三個維度只限於兩個單位的大小(長度?)。 –

回答

0

喜歡的東西(未經測試):

std::istream_iterator<int> eos; 
std::vector<std::vector<int>> matrix; 
while(std::getline(str, line)) 
{ 
    std::istringstream istr(line); 
    std::istream_iterator<int> iin(istr); 
    std::vector<int> columns; 
    std::back_insert_iterator<vector<int>> back_it(columns); 
    std::copy(iin, eos, back_it); 
    matrix.push_back(columns); 
}