public member function
<valarray>

std::valarray::valarray

預設 (1)
valarray();
大小 (2)
explicit valarray (size_t n);
填充 (3)
valarray (const T& val, size_t n);
陣列 (4)
valarray (const T* p, size_t n);
複製 (5)
valarray (const valarray& x);
子陣列 (6)
valarray (const slice_array<T>& sub);valarray (const gslice_array<T>& sub);valarray (const mask_array<T>& sub);valarray (const indirect_array<T>& sub);
預設 (1)
valarray();
大小 (2)
explicit valarray (size_t n);
填充 (3)
valarray (const T& val, size_t n);
陣列 (4)
valarray (const T* p, size_t n);
複製/移動 (5)
valarray (const valarray& x);valarray (valarray&& x) noexcept;
子陣列 (6)
valarray (const slice_array<T>& sub);valarray (const gslice_array<T>& sub);valarray (const mask_array<T>& sub);valarray (const indirect_array<T>& sub);
初始化列表 (7)
valarray (initializer_list<T> il);
valarray 建構函式
構造一個 valarray 物件
(1) 預設建構函式
構造一個空的 valarray,不包含任何元素。 可以透過呼叫成員 resize 稍後修改size
(2) 大小初始化
構造一個包含 n 個值初始化的元素的 valarray
(3) 填充初始化
構造一個包含 n 個元素的 valarray,每個元素都初始化為 val
(4) 陣列初始化
構造一個包含 n 個元素的 valarray,初始化為 p 指向的陣列中元素的值。
(5) 複製 / 移動建構函式
構造一個包含 x 內容的 valarray
移動建構函式保證以常量時間執行,使 x 處於未指定但有效的狀態。
(6) 子陣列
構造一個包含 valarray 子選擇內容的 valarray
(7) 初始化列表
構造一個 valarray,其中包含 il 中每個元素的副本,順序相同。

引數

n
陣列長度。
size_t 是一個無符號整數型別。
val
每個元素初始化的值。
p
指向元素陣列的指標。 前 n 個元素用作 valarray 中元素的初始值。
x
與相同型別(具有相同的類模板引數 T)的 valarray 物件。
sub
valarray 下標操作的結果。
il
一個 initializer_list 物件。
這些物件是從初始化列表宣告符自動構造的。
Tvalarray 的模板引數(值型別)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// valarray constructor example
#include <iostream>     // std::cout
#include <valarray>     // std::valarray, std::slice

int main ()
{
  int init[]= {10,20,30,40};
  std::valarray<int> first;                             // (empty)
  std::valarray<int> second (5);                        // 0 0 0 0 0
  std::valarray<int> third (10,3);                      // 10 10 10
  std::valarray<int> fourth (init,4);                   // 10 20 30 40
  std::valarray<int> fifth (fourth);                    // 10 20 30 40
  std::valarray<int> sixth (fifth[std::slice(1,2,1)]);  // 20 30

  std::cout << "sixth sums " << sixth.sum() << '\n';

  return 0;
}

輸出

sixth sums 50


複雜度

預設建構函式移動建構函式的常量。
對於其他建構函式,取決於庫的實現(操作可以並行化)。

迭代器有效性

移動建構函式使 x 的迭代器、引用和子陣列無效。

資料競爭

所有有效複製的元素都被訪問。
移動建構函式修改 x

異常安全

如果對元素執行的任何操作丟擲異常,則會導致未定義的行為
如果函式無法分配儲存空間,它可能會丟擲異常(例如 bad_alloc),儘管這不是強制性的。
移動建構函式從不丟擲異常(無丟擲保證)。

另見