簡體   English   中英

std :: valarray和std :: array之間有什么區別

[英]What is the difference between std::valarray and std::array

valarray類看起來與array類相同,你能解釋一下我在哪里更喜歡valarray不是array ,反之亦然?

  • valarray已經在C ++ 03中, array是C ++ 11中的新功能
  • valarray是可變長度, array不是。
  • valarray專為數值計算而設計,並提供大量操作,包括+-*cossin等... 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.

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