我遇到一個問題,我不太明白:讓指針矢量元素
我與
edge_vec1.push_back(Edge(src,dest));
創建對象邊緣然後我想一個指針保持這一邊緣單獨的載體:
edge_vec2.push_back(&edge_vec1.back());
然而,一旦添加,指針向第一邊緣在edge_vec2無效所述第二邊緣對象(得到一些隨機數據)。是否因爲edge_vec2中的指針實際指向edge_vec1中的某個位置,而不是指向底層元素?我可以通過在堆上創建我的Edge對象來避免這種情況,但我想知道發生了什麼。
謝謝。
爲什麼要在第一個地方存儲一個指向數組元素的指針?你不能只存儲一個索引? – InternetAussie
@InternetAussie那麼,我確實將元素存儲在第一個向量中。但假設第一個容器實際上是更復雜的東西,例如鄰接表。然後沒有索引,但我想保留一個選項來快速迭代所有的邊緣 – LazyCat
最簡單的解決方案是將指針存儲在兩個容器中並動態創建對象。 – Logman