簡體   English   中英

std :: vector中的std :: string?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM