首頁 > 後端開發 > C++ > 如何從 C 風格陣列有效率地初始化 `std::vector`?

如何從 C 風格陣列有效率地初始化 `std::vector`?

Patricia Arquette
發布: 2024-11-09 14:22:02
原創
471 人瀏覽過

How to Efficiently Initialize a `std::vector` from a C-style Array?

有效率地從C 風格陣列分配std::vector

當遇到從C 風格陣列初始化std::vector 的任務時C風格的數組,兼顧效率和便利性至關重要。當外部約束要求以C 樣式陣列格式提供資料時,就會出現這種情況,如以下類別範例所示:

class Foo {
  std::vector<double> w_;
public:
  void set_data(double* w, int len){
   // how to cheaply initialize the std::vector?
}
登入後複製

為了有效地初始化std::vector,我們可以利用以下事實: C 風格的陣列指標也可以被視為迭代器。這使我們能夠避免創建中間容器或循環遍歷各個元素:

優雅而高效的解決方案:

w_.assign(w, w + len);
登入後複製

這裡,w是指向第一個元素的指標C 風格數組中的元素,w len 指向數組的末尾。使用帶有迭代器的分配函數會自動從陣列元素建構向量元素。這種方法不僅高效而且簡潔優雅。

以上是如何從 C 風格陣列有效率地初始化 `std::vector`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板