難道是C++一個壞主意,做這樣的事情:在C++中有一個類型爲容器的字段是一個壞主意?
struct Node
{
string name;
vector<Node> children;
};
我這麼問是因爲它看起來對我來說,調整children
因任何原因有可能導致指數複製級聯。但另一方面,vector<Node*>
有其自身的問題,並且諸如vector<shared_ptr<Node>>
之類的內容在安全的情況下,具有較差的內存局部性(由於過多的間接指向),當您嘗試例如內存時,這會開始傷害。記憶中建立一棵巨大的樹。
因此,一般來說,在C++(03)中使用自己的類型的容器是不是一個好主意?是否有其他原因避免(或偏好)這種習慣用法,而不是使用指針容器?
@Downvoter:小心點評? – Mehrdad