看板 C_and_CPP 關於我們 聯絡資訊
我現在要建一個類似 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
loveme00835:用 vector<T>::pointer 或是 vector<T>::iterator 都 09/21 02:06
loveme00835:有可能因為重配置大小而失效, map的key可以改存 09/21 02:08
loveme00835:vector<T>::size_type 然後對應到 list<T>::iterator 09/21 02:09
loveme00835:多寫一款比較式其實沒什麼... 09/21 02:09
wagaru:l_index 那個list會在任意位置插入跟刪除 09/21 02:19
wagaru:這樣map的value是不是可能會失效啊? 09/21 02:20
AstralBrain:list::iterator不會因為插入或刪除而失效 09/21 02:28
AstralBrain:(被刪掉的那個node例外XD) 09/21 02:28
loveme00835:詳見 C++98 23.2.2.3 Notes 09/21 02:35
angleevil:對map而言,你只是把value的元素叫出來用,而它剛好是list 09/21 08:46
angleevil:即使對內容做變更.也不會有太大影響.除非刪到empty. 09/21 08:48
angleevil:連個位置都沒有,才會引發爆炸. 09/21 08:49
angleevil:c++也不是無聊去創造Template的,他對oo是有一定貢獻的 09/21 08:50
wagaru:謝謝各位 這麼簡單的方法我居然一直沒想到… = = 09/21 12:17