看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) visual C++ 2010 Windows Form 專案 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) #include <cliext/vector> #include <cliext/algorithm> 問題(Question): 各位好,想請教關於 STL/CLR 的vector內的值之取代的問題, 如果我宣告的是一維的vector,則可以用中括號更改內容,ex: vector<int> a; a.push_back(0); a[0]=5; //cout之後的確已經被改成5 但如果我宣告的是二維的vector,則無法用中括號更改內容,ex: vector< vector<int> > b;//宣告二維的vector vector<int> temp; //宣告一維的vector temp.push(0); //一維的vector丟值 temp.push(1); //一維的vector丟值 b.push_back(temp); //將一維的vector丟到二維的vector b[0][1]=5; //cout之後,無法用中括號更改內容,仍是1 ?? 餵入的資料(Input): b[0][1]=1 預期的正確結果(Expected Output): b[0][1]=5 錯誤結果(Wrong Output): b[0][1]=1 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.82.254 ※ 編輯: bbbbbbjeff 來自: 140.116.82.254 (11/01 00:27)
linotwo:http://ideone.com/OaRwiE 11/01 00:36
diabloevagto:你這個code用push也不會過 11/01 00:44
bbbbbbjeff:回應1樓,要在CLR專案內喔,並始用 STL/CLR 的標頭檔, 11/01 00:48
linotwo:b.at(0)[1] = 5; 11/01 00:48
bbbbbbjeff:你那個連結使用的是純STL,不是後來的STL/CLR 11/01 00:49
bbbbbbjeff:回應diabloevagto,會過啦,我只寫重點的CODE ^^ 11/01 00:50
※ 編輯: bbbbbbjeff 來自: 112.104.194.140 (11/01 00:52)
linotwo:http://ideone.com/Watz1d 11/01 00:53
bbbbbbjeff:l大大,"結果: 尚未執行" ?? 11/01 00:55
linotwo:ideone 可以選擇不要 run code 11/01 00:57
linotwo:你如果用 VC 開一個專案把 code 貼上是可以執行的。 11/01 00:58
linotwo:或是你可以直接把你的 b[0][1] 改成 b.at(0)[1] 試試看。 11/01 00:59
bbbbbbjeff:我馬上試試 11/01 01:01
bbbbbbjeff:可以了,原還是要用 b.at(0)[1]=5; 不是b[0][1]=5; ^^ 11/01 01:14
bbbbbbjeff:看來STL/CLR與STL在二維容器的用法上有差! 11/01 01:15
diabloevagto:用純stl不會過,看來我誤會了 11/01 12:32