[英]std::string in std::vector?
如果內部向量已重新定義,則std::vector
內的std::vector
已有一些問題。 我想知道std::vector<std::string>
(因為內部字符串可以重新定義)是否完全安全,還是std::vector<std::string*>
更好?
這個問題很可能是誤解的結果,這種誤解使向量看起來與數組相同。
確實,數組必須包含相同類型和靜態大小的元素,因為可以調整矢量的大小,但是靜態sizeof(vector<X>)
並不依賴於其運行時大小。 vector<vector<X> >
內部僅包含指向動態分配的vector<X>
數組的指針(加上一些其他描述性數據),每個指針又僅包含指向其自身動態分配的X
數組的指針。
實際上,這些數組是由相同的元素,相同的大小組成的。
將滿足標准類型要求的任何類型放置在vector
是絕對安全的。 這些要求在接口上嚴格指定,並且基本上總結為“可移動”。 由於std::string
是可移動的,因此可以將其放置在vector
。 它可能動態分配其他內存這一事實是無關緊要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.