[問題] vector< map<string,int> >這樣有錯嗎?

看板C_and_CPP (C/C++)作者 (阿神)時間13年前 (2013/01/13 18:08), 編輯推噓3(3025)
留言28則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C++ 問題(Question): 程式最後 vector<simap> vecofmap(letter.begin(), letter.end()); 好像有問題,要執行的時候會跳去另一個stl_construct.h的檔案裡 (simap是我用typedef重新命名的map<string,int>) 但我不知道這樣是什麼意思 我是想把map存到vector裡 請問這樣寫不行嗎? 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> #include <sstream> #include <string> #include <map> #include <vector> using namespace std; typedef map<string,int> simap; int main() { int num; cin >> num; simap letter; string line,word; for (int i=0; i!=num; i++){ getline(cin,line); istringstream stream(line); while (stream >> word){ letter["word"]++; } } vector<simap> vecofmap(letter.begin(), letter.end()); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.19.145.249

01/13 18:25, , 1F
vecofmap( 1, letter )
01/13 18:25, 1F

01/13 18:29, , 2F
你要放的letter只是一個simap
01/13 18:29, 2F

01/13 18:49, , 3F
這可以執行喔= =? 感覺會compile不過....
01/13 18:49, 3F

01/13 19:05, , 4F
就是沒過,可是我又看不懂錯在哪才來問~
01/13 19:05, 4F

01/13 19:09, , 5F
不好意思我程度很差,希望一二樓可以解釋詳細一點
01/13 19:09, 5F

01/13 19:15, , 6F
http://goo.gl/buKPR fill constructor
01/13 19:15, 6F

01/13 19:36, , 7F

01/13 19:36, , 8F
我猜你想要的是這樣。
01/13 19:36, 8F

01/13 19:37, , 9F
letter[word] 的 word 不用雙引號。
01/13 19:37, 9F

01/13 19:38, , 10F
由於 map 的 iterator 是對於每個 pair (存 key, value)
01/13 19:38, 10F

01/13 19:39, , 11F
所以 vector 的每個元素也必須是同樣的 pair 才能填入。
01/13 19:39, 11F

01/13 20:31, , 12F
你的宣告方法會變成是可以放很多map的vector
01/13 20:31, 12F

01/13 20:32, , 13F
如果你是要把map內的字串放到vector 就看l大的
01/13 20:32, 13F

01/13 20:46, , 14F
我想要先把資料存進去map(因為資料都一兩個兩個一組)
01/13 20:46, 14F

01/13 20:46, , 15F
然後再把map放到vector裡排序
01/13 20:46, 15F

01/13 20:58, , 16F
提供一個比較偷懶的方法 用set
01/13 20:58, 16F

01/13 20:58, , 17F
01/13 20:58, 17F

01/13 22:41, , 18F
我一直以為map是像list,vector可以存一堆東西,差別只在
01/13 22:41, 18F

01/13 22:42, , 19F
有沒有順序而已,所以不是這樣,map是像int這樣嗎? 只存
01/13 22:42, 19F

01/13 22:42, , 20F
一個物件?
01/13 22:42, 20F

01/13 22:54, , 21F
map是一個container
01/13 22:54, 21F

01/13 22:54, , 22F
http://ideone.com/k8dY57 我突然發現用set有點多餘XD
01/13 22:54, 22F

01/13 22:55, , 23F
他存的東西有順序 然後是存pair
01/13 22:55, 23F

01/13 22:56, , 24F
要取pair的第一個元素就是用first, 第二個用second
01/13 22:56, 24F

01/13 23:16, , 25F
我覺得你的問題可能卡在 container內放container
01/13 23:16, 25F

01/13 23:17, , 26F
像 vector<vector<int> > 這樣就是一個放vector<int>
01/13 23:17, 26F

01/13 23:18, , 27F
的vector, 而你一開始的寫法就是放map的vector
01/13 23:18, 27F

01/13 23:18, , 28F
但你想做的應該是放你map的key的vector
01/13 23:18, 28F
文章代碼(AID): #1GyeUXPt (C_and_CPP)
文章代碼(AID): #1GyeUXPt (C_and_CPP)