![](/img/trans.png)
[英]What is the difference between ::std::string and std::string?
[英]What is the difference between std::valarray and std::array
valarray
類看起來與array
類相同,你能解釋一下我在哪里更喜歡valarray
不是array
,反之亦然?
valarray
已經在C ++ 03中, array
是C ++ 11中的新功能 valarray
是可變長度, array
不是。 valarray
專為數值計算而設計,並提供大量操作,包括+
, -
, *
, cos
, sin
等... array
不會。 valarray
有一個接口來檢索數組的切片(子數組), array
沒有。 與std::valarray<T>
相關的類模板旨在支持稱為表達式模板的優化技術。 我沒有嘗試這樣做,但我的理解是規范並不是非常需要這個並且也沒有真正支持這一點。 一般來說, std::valarray<T>
是一個相當專業的類,並沒有真正廣泛使用。 另外,我認為std::valarray<T>
的模板參數支持是一個有限集(例如數字內置類型)。
在另一個std::array<T, n>
是一個固定大小的數組,盡可能支持固定大小的普通容器接口。 本質上, std::array<T>
是一個更方便使用的T[n]
版本。
valarray
是一種動態數據結構,其大小可以在運行時更改,並執行動態分配。 array
是一個靜態數據結構,其大小在編譯時確定(它也是一個聚合)。
但是,不要使用valarray
; 只需使用vector
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.