我有一個向量std::vector<MyClass> myclass_vec(10)
,有10個初始化對象MyClass
。現在我想遍歷這個向量並存儲對另一個向量中的每個MyClass
對象的引用std::vector<MyClass> myclass_vec_refs
。我之所以想要存儲引用是因爲我不必複製對象,顯然,請參閱與myclass_vec
中相同的對象。如何從C++中的另一個矢量中的一個矢量中存儲對象的引用?
出於某種原因,這不符合預期。我必須像這樣申報std::vector<&MyClass> myclass_vec_refs
嗎?
正如我正在查看其他問題,我在這裏看到有關std::unique_ptr
。如果我更改std::vector<std::unique_ptr<MyClass>> myclass_vec(10)
,那麼我將無法在myclass_vec_refs
中擁有參考或指針,因爲它們被聲明爲唯一的。請糾正我,如果我錯了。
另一種方法是使用std::shared_ptr
。由於它擁有一個參考計數器,因此我可以讓myclass_vec_refs
指向myclass_vec
中的對象,但是我讀到這會引入相當多的開銷,share_ptr應僅用作最後的手段。
我也不知道是否引用像我試圖解決。如果myclass_vec
中的對象被刪除,會發生什麼情況? myclass_vec_refs
矢量的大小是否爲-1,因爲該對象不再存在,還是僅指向錯誤的內存?
難道emplace_back
可能是myclass_vec_refs
載體中的參考嗎?由於這創造了對象就地,我想這不起作用,只有push_back
可以使用?
爲什麼不只是存儲一個迭代器中的其他載體? – NathanOliver
爲什麼不存儲指針而不是分配的對象? –
爲什麼不存儲索引呢? –