作者bbbbbbjeff (雲伴風 風隨雲)
看板C_and_CPP
標題[問題] STL/CLR 的二維容器的值取代之問題
時間Thu Nov 1 00:26:45 2012
開發平台(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)
→ 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)
→ 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