[問題] C++ Map存reference或pointer

看板C_and_CPP (C/C++)作者 (wagaru)時間14年前 (2011/09/21 01:34), 編輯推噓1(1013)
留言14則, 4人參與, 最新討論串1/1
我現在要建一個類似 table 的東西 表格有 u_index 與 l_index u_index 與 l_index 有對應關係在 Tree是我定義的類別… 表格: std::vector<Tree> u_index; std::list<Tree> l_index; 對應關係: std::map<Tree,Tree> l_u_index_map; 因為程式跑到一半時會爆記憶體所以想改這個map, 因為他裡面無論是 key 還是 value 都是u_index或l_index的成員 想讓 map 的 key 跟 value 是 reference to tree 但 map 的 key 似乎不能存reference, pointer的話可能還要寫新的比較式(<) 請問有什麼好解法嗎? P.S 似乎有看到人說可用boost的ref? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.96.116.100

09/21 02:06, , 1F
用 vector<T>::pointer 或是 vector<T>::iterator 都
09/21 02:06, 1F

09/21 02:08, , 2F
有可能因為重配置大小而失效, map的key可以改存
09/21 02:08, 2F

09/21 02:09, , 3F
vector<T>::size_type 然後對應到 list<T>::iterator
09/21 02:09, 3F

09/21 02:09, , 4F
多寫一款比較式其實沒什麼...
09/21 02:09, 4F

09/21 02:19, , 5F
l_index 那個list會在任意位置插入跟刪除
09/21 02:19, 5F

09/21 02:20, , 6F
這樣map的value是不是可能會失效啊?
09/21 02:20, 6F

09/21 02:28, , 7F
list::iterator不會因為插入或刪除而失效
09/21 02:28, 7F

09/21 02:28, , 8F
(被刪掉的那個node例外XD)
09/21 02:28, 8F

09/21 02:35, , 9F
詳見 C++98 23.2.2.3 Notes
09/21 02:35, 9F

09/21 08:46, , 10F
對map而言,你只是把value的元素叫出來用,而它剛好是list
09/21 08:46, 10F

09/21 08:48, , 11F
即使對內容做變更.也不會有太大影響.除非刪到empty.
09/21 08:48, 11F

09/21 08:49, , 12F
連個位置都沒有,才會引發爆炸.
09/21 08:49, 12F

09/21 08:50, , 13F
c++也不是無聊去創造Template的,他對oo是有一定貢獻的
09/21 08:50, 13F

09/21 12:17, , 14F
謝謝各位 這麼簡單的方法我居然一直沒想到… = =
09/21 12:17, 14F
文章代碼(AID): #1EUCwznV (C_and_CPP)
文章代碼(AID): #1EUCwznV (C_and_CPP)