[討論] 檔案讀進二維陣列 (vector) 的寫法

看板C_and_CPP (C/C++)作者 (Aider)時間14年前 (2012/01/08 17:58), 編輯推噓0(0013)
留言13則, 3人參與, 最新討論串1/1
剛寫了一個讀檔程式 input.txt 如下 1 2 3 2 3 4 5 3 4 5 -6 7 8 想要存成一個 vector< vector< int > > 我想到的寫法是這樣 #include<iostream> #include<fstream> #include<sstream> #include<string> #include<vector> using namespace std; int main(){ ifstream fin( "input.txt" ); vector< vector< int > > datas; //2 維陣列 int tmp; //暫存 istringstream iline; //一行的資料流 string line; //一行的資料 while( getline( fin, line ) ){ datas.push_back( vector<int>() ); iline.str( line ); while( iline >> tmp ){ datas.rbegin()->push_back( tmp ); } iline.clear(); } //資料存進 datas 二維陣列中了 //印出資料 int i, j; for( i=0 ; i<datas.size() ; ++i ){ for( j=0 ; j<datas[i].size() ; ++j ){ cout << datas[i][j] << " "; } cout << endl; } fin.close(); return 0; } 我用了 sstream 才處理掉 是還沒出動 algorithm 標頭啦 想要討論一下有沒有其他寫法 以上 by Aider -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 182.235.46.73

01/08 18:06, , 1F
行列數已知?
01/08 18:06, 1F

01/08 18:08, , 2F
01/08 18:08, 2F

01/08 18:08, , 3F
未知,行數與每行長度皆不固定
01/08 18:08, 3F

01/08 20:20, , 4F
http://codepad.org/HF0X39RH 別再用 C 語言的方式寫
01/08 20:20, 4F

01/08 20:21, , 5F
C++ 了, 物件能不共用就不共用, 把生命週期縮短, 新創
01/08 20:21, 5F

01/08 20:21, , 6F
一個 scope 避免未來還會參考到不合法的物件
01/08 20:21, 6F

01/08 20:47, , 7F
幫我在 back_of_jagged_array++ 前面加上 *
01/08 20:47, 7F

01/08 20:48, , 8F
你的 rbegin() 可以改成 back()
01/08 20:48, 8F

01/09 00:34, , 9F
所以是指就讓他建構解構 n 次 istringstream 沒關係這樣?
01/09 00:34, 9F
※ 編輯: WJAider 來自: 182.235.46.73 (01/09 00:34)

01/09 11:33, , 10F
先不考慮效能, 讓每次迭代都是彼此獨立的會較好偵錯,
01/09 11:33, 10F

01/09 11:33, , 11F
再者加速這件事情編譯器就可以幫你作到了
01/09 11:33, 11F

01/09 12:35, , 12F
保持簡單, 除非你有什麼理由把程式碼拉長到模糊重點
01/09 12:35, 12F

01/09 18:26, , 13F
嗯好~不過習慣有點難改就是了,多謝指教
01/09 18:26, 13F
文章代碼(AID): #1F2MZQ3O (C_and_CPP)
文章代碼(AID): #1F2MZQ3O (C_and_CPP)