[STL ] 有關map的使用...

看板C_and_CPP (C/C++)作者 (數牙)時間16年前 (2009/06/21 14:46), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/1
我是用STL的新手... 爬過文了但是還是找不到答案 class cell { public: string name; cell* parent; vector<cell*> son; cell(string myname); cell(string myname, string parent_name); cell() }; class c_root { public: vector<cell*> son; //記錄全部我們自己new出來的節點 map<string, cell*> m; //也是要記錄我們自己new出來的全部節點,但是要快速存取 }; c_root* root; cell* myfind(const char* inn) //花費O(n) { int s= root->son.size(); cell* ret=NULL; for (int i=0; i<s; i++) { if (strcmp(root->son.at(i)->name.c_str(), inn)==0) { ret= root->son.at(i); break; } } retrun ret; } cell* myfind2(const char* inn) //我想要讓它花費O(1) { map<string, cell*>::iterator it= root->m.find(inn); if (it != root->m.end()) return (????????); else retrun NULL; } ????的部份,我試過 return(it->second); ==> error C2784一大堆 return(*it->second); ==> error C2440;無法由cell轉換為cell* return &(*it->second); ==>error C2784一大堆 幫我看看吧 .. -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.40.122.146

06/21 14:56, , 1F
map 的 find 是 O(lg(n)) ...
06/21 14:56, 1F

06/21 15:08, , 2F
(*it)->... iteraor是指標 要dereference
06/21 15:08, 2F
文章代碼(AID): #1AFTSn8k (C_and_CPP)
文章代碼(AID): #1AFTSn8k (C_and_CPP)