從C 樣式陣列有效初始化std::vector
使用遺留程式碼或外部相依性時,您可能會遇到以下情況資料以C 樣式數組的形式提供。將此資料整合到 std::vector 等現代 C 結構中需要仔細考慮效率。
在提供的程式碼片段中,Foo 類別擁有一個名為 w_ 的 std::vector。要使用 C 樣式數組(w 長度為 len)提供的資料填入此向量,您需要一種經濟高效的方法。
避免過度調整大小和複製
雖然您可以將w_ 的大小調整為len 並手動填充它,但這種方法涉及不必要的大小調整和逐元素複製。類似地,使用 std::copy() 會引入額外的複製操作。
利用指針算術
更有效的解決方案是利用指針算術。由於指標可以被視為迭代器,因此您可以直接使用範圍[w, w len) 來初始化w_:
w_.assign(w, w + len);
此語法透過將C 樣式陣列w 中的一系列元素指派給來初始化w_它的結束。 std::vector 類別負責分配必要的記憶體並有效複製元素。
透過使用此方法,您可以避免明確調整大小和單獨複製操作的開銷,從而獲得更高效、更簡潔的方法.
以上是如何有效地從 C 風格陣列初始化 `std::vector`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!