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),尽管这不是强制性的。
移动构造函数从不抛出异常(无抛出保证)。

另见