主题:C++ 共享一個類對象的問題
我定義了一個struct Info 結構體.
如果用 list<Info> 的話,
因為我要我要用很多條鏈,即 list<Info> ls[10];
我再向每個 ls 添加一些Info對象,
這些Info對象是有重複的.
我想每條鏈只共享一個相同的 Info.
即如果 ls[0] 與 ls[1] 都有一個相同的對象 Info info;
那麼當我改變 ls[0] 中的 info 時,ls[1]中的 info 也會隨之改變.
但問題是用 list<Info> 在加進去鏈時是用 clone的,
即每個 ls[0]中的info 和ls[1]中的info是不一樣的.
我想過如果改成 list<Info *> 就可以解決這個問題了.
但又會引出另外的問題.
例如 如果 ls[0] 和 ls[1] 都有指向 info對象 的指針,
那麼當 ls[0] 析構了.ls[1] 就不能再訪問 info對象了...
這在C#裏面完全不是個問題...因為C#是自動管理內存的...
那有什麽好的方法,可以實現:
所有的 list 中的所有節點,如果任意兩條鏈有相同的節點,
那這個節點就共享一塊內存,即實際上只有一個節點.
謝謝!!!!!!!!!!!!!!!!!!!!!!!!!
[em2][em2][em2][em2][em2]
如果用 list<Info> 的話,
因為我要我要用很多條鏈,即 list<Info> ls[10];
我再向每個 ls 添加一些Info對象,
這些Info對象是有重複的.
我想每條鏈只共享一個相同的 Info.
即如果 ls[0] 與 ls[1] 都有一個相同的對象 Info info;
那麼當我改變 ls[0] 中的 info 時,ls[1]中的 info 也會隨之改變.
但問題是用 list<Info> 在加進去鏈時是用 clone的,
即每個 ls[0]中的info 和ls[1]中的info是不一樣的.
我想過如果改成 list<Info *> 就可以解決這個問題了.
但又會引出另外的問題.
例如 如果 ls[0] 和 ls[1] 都有指向 info對象 的指針,
那麼當 ls[0] 析構了.ls[1] 就不能再訪問 info對象了...
這在C#裏面完全不是個問題...因為C#是自動管理內存的...
那有什麽好的方法,可以實現:
所有的 list 中的所有節點,如果任意兩條鏈有相同的節點,
那這個節點就共享一塊內存,即實際上只有一個節點.
謝謝!!!!!!!!!!!!!!!!!!!!!!!!!
[em2][em2][em2][em2][em2]