表示另一个容器保存的数据的 N 维视图。
template <
typename _Value_type,
int _Rank = 1
>
class array_view : public _Array_view_base<_Rank, sizeof(_Value_type)/sizeof(int)>;
template <
typename _Value_type,
int _Rank
>
class array_view<const _Value_type, _Rank> : public _Array_view_base<_Rank, sizeof(_Value_type)/sizeof(int)>;
参数
_Value_type
array_view 对象中的元素的数据类型。_Rank
array_view 对象的秩。
成员
公共构造函数
名称 |
描述 |
---|---|
初始化 array_view 类的新实例。 array<T,N> 没有默认构造函数。 所有构造函数都只限于在 CPU 上运行,并且不能在 Direct3D 目标上执行。 |
|
销毁 array_view 对象。 |
公共方法
名称 |
描述 |
---|---|
将 array_view 对象的内容复制到指定的目标,方法是调用 copy(*this, dest)。 |
|
返回指向 array_view 原始数据的指针。 |
|
丢弃作为此视图基础的当前数据。 |
|
返回 array_view 对象的范围对象。 |
|
返回对索引的元素的引用。 |
|
返回 array_view 的数据源位置的 accelerator_view。 |
|
注意,array_view 对象绑定的内存已在 array_view 接口外经过修改。 此方法的调用使所有缓存的信息过时。 |
|
返回包含 array_view 对象中所有元素的一维数组。 |
|
返回指定原点上并且选择性地具有指定范围的 array_view 对象的子部分。 |
|
同步所有针对 array_view 对象返回其源数据所做的修改。 |
|
将所有针对 hh305260(v=vs.120).md 对象的修改异步同步回其源数据。 |
|
同步所有将 array_view 对象改为指定的 accelerator_view 所做的修改。 |
|
将所有针对 array_view 对象的修改异步同步到指定的 accelerator_view。 |
|
使用此 array_view 对象的数据,生成不同的级别的 array_view 对象。 |
公共运算符
名称 |
描述 |
---|---|
返回由一个参数或多个参数指定的元素的值。 |
|
返回参数指定的元素。 |
|
将指定的 array_view 对象的内容复制到此对象中。 |
公共常量
名称 |
描述 |
---|---|
存储 array_view 对象的秩。 |
数据成员
名称 |
描述 |
---|---|
获取定义 array_view 对象形状的 extent 对象。 |
|
获取 array_view 的数据源所在的 accelerator_view |
|
array_view 和绑定数组的值类型。 |
备注
array_view 类表示数组对象或 array 对象的字部分包含的数据的视图。
您可访问源数据所在的(本地)或不同的快捷键上或附着域(远程)上的 array_view 对象。 远程访问对象时,视图在必要时复制和缓存。 除了自动缓存的效果,array_view 对象具有的性能配置文件类似于 array 对象的性能配置文件。 通过视图访问数据时会降低少量性能。
有三种远程使用方案:
系统内存指针的视图通过快捷键对 parallel_for_each 的调用,并且在该快捷键上对其进行访问的方式传递。
位于一个快捷键的数组的视图通过另一快捷键对 parallel_for_each 的调用并在该快捷键上对其进行访问的方式传递。
在 CPU 进行访问的位于快捷键上的数组的视图。
在这些方案的任意一个中,运行时将引用的视图复制到远程位置,并且如果由 array_view 对象的调用进行修改,则将复制回本地位置。 运行时可能优化复制更改回来的过程,可能仅复制更改的元素,或可能复制未更改的部分。 在一个数据源上重叠 array_view 对象无法保证维持远程位置上的引用完整性。
您必须将任何多线程访问同步到相同的数据源。
就 array_view 对象中的缓存数据而言,运行时做出以下保证:
所有对 array 对象和其上的按程序顺序排列的 array_view 对象的经过很好同步的访问都遵循串行发生前关系。
所有对单一 array 对象上的同一个加速器上的 array_view 对象都通过 array 对象获得了别名。 它们会在遵循程序排序的关系之前引发一个总发生数。 没有缓存。 如果 array_view 对象在不同的加速器上执行,访问顺序为未定义,并创造了争用条件。
使用系统内存中的指针创建 array_view 对象时,必须通过 array_view 指针更改视图 array_view 对象。 或者,如果直接更改本机内存,您必须在某个附加到系统指针的 array_view 对象上调用 refresh(),而不是通过使用 array_view 对象。
每个操作通知 array_view 对象:基础本机存储已更改,且加速器上的所有副本都已过时。 如果您遵循这些准则,基于指针的视图与提供的数据并行数组视图相同。
继承层次结构
_Array_view_shape
_Array_view_base
array_view
要求
**标头:**amp.h
命名空间: 并发