array Sınıfı

Bir hızlandırıcıya veri taşımak için kullanılan bir veri kapsayıcısını temsil eder.

Sözdizimi

template <typename value_type, int _Rank>
friend class array;

Parametreler

value_type
Verilerin öğe türü.

_Rütbe
Dizinin sırası.

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
dizi Oluşturucu array sınıfının yeni bir örneğini başlatır.
~dizi Yıkıcısı Nesneyi yok eder array .

Genel Yöntemler

Veri Akışı Adı Açıklama
copy_to Dizinin içeriğini başka bir diziye kopyalar.
data Dizinin ham verilerine bir işaretçi döndürür.
get_accelerator_view Dizinin ayrıldığı konumu temsil eden accelerator_view nesnesini döndürür. Bu özelliğe yalnızca CPU üzerinden erişilebilir.
get_associated_accelerator_view Nesnenin örneğini oluşturmak array için bir hazırlama oluşturucu çağrıldığında parametre olarak geçirilen ikinci accelerator_view nesnesini alır.
get_cpu_access_type Dizinin access_type döndürür. Bu yönteme yalnızca CPU üzerinden erişilebilir.
get_extent Dizinin extent nesnesini döndürür.
reinterpret_as Nesnedeki array tüm öğeleri içeren tek boyutlu bir dizi döndürür.
section Belirtilen kaynakta ve isteğe bağlı olarak, belirtilen uzantıya sahip nesnenin bir alt bölümü array döndürür.
view_as nesnesinden array oluşturulduğunda bir array_view nesnesi döndürür.

Ortak İşleçler

Veri Akışı Adı Açıklama
operator std::vector<value_type> Diziyi örtük olarak std::vector nesnesine dönüştürmek için kullanırcopy(*this, vector).
operator() Parametreler tarafından belirtilen öğe değerini döndürür.
işleç[] Belirtilen dizindeki öğesini döndürür.
operator= Belirtilen array nesnenin içeriğini bu nesneye kopyalar.

Genel Sabitler

Veri Akışı Adı Açıklama
rank Sabiti Dizinin derecesini depolar.

Ortak Veri Üyeleri

Veri Akışı Adı Açıklama
accelerator_view Dizinin ayrıldığı konumu temsil eden accelerator_view nesnesini alır. Bu özelliğe yalnızca CPU üzerinden erişilebilir.
associated_accelerator_view Nesnenin örneğini oluşturmak array için bir hazırlama oluşturucu çağrıldığında parametre olarak geçirilen ikinci accelerator_view nesnesini alır.
cpu_access_type CPU'nun dizinin depolama alanına nasıl erişebileceğini gösteren access_type alır.
kapsam Dizinin şeklini tanımlayan kapsamı alır.

Açıklamalar

türü array<T,N> , hızlandırıcı veya CPU gibi belirli bir konumda bulunan yoğun ve normal (pürüzlü olmayan) N boyutlu bir diziyi temsil eder. Dizideki öğelerin veri türü, Thedef hızlandırıcıyla uyumlu bir türde olmalıdır. dizisinin derecelendirmesi , N(dizisi statik olarak belirlenir ve türün bir parçasıdır), ancak dizinin kapsamı çalışma zamanı tarafından belirlenir ve sınıfı extent<N>kullanılarak ifade edilir.

Bir dizi, herhangi bir sayıda boyuta sahip olabilir, ancak bazı işlevler derece bir, iki ve üç olan nesneler için array özeldir. Boyut bağımsız değişkenini atlarsanız varsayılan değer 1'dir.

Dizi verileri, bellekte bitişik olarak düzenlenir. En az önemli boyuttaki bir öğeye göre farklılık gösteren öğeler bellekte bitişik olur.

Diziler mantıksal olarak değer türleri olarak kabul edilir, çünkü bir dizi başka bir diziye kopyalandığında derin bir kopya gerçekleştirilir. İki dizi hiçbir zaman aynı verilere işaret etmez.

Türü array<T,N> çeşitli senaryolarda kullanılır:

  • Bir hızlandırıcıdaki hesaplamalarda kullanılabilecek bir veri kapsayıcısı olarak.

  • Ana bilgisayar CPU'sunun belleğini tutmak için bir veri kapsayıcısı olarak (diğer dizilere ve diğer dizilerden kopyalamak için kullanılabilir).

  • Konak-cihaz kopyalarında hızlı bir aracı görevi görmesi için bir hazırlama nesnesi olarak.

Devralma Hiyerarşisi

array

Gereksinimler

Üst bilgi: amp.h

Ad Alanı: Eşzamanlılık

~dizi

Nesneyi yok eder array .

~array() restrict(cpu);

accelerator_view

Dizinin ayrıldığı konumu temsil eden accelerator_view nesnesini alır. Bu özelliğe yalnızca CPU üzerinden erişilebilir.

__declspec(property(get= get_accelerator_view)) Concurrency::accelerator_view accelerator_view;

dizi

Dizi sınıfının yeni bir örneğini başlatır. için array<T,N>varsayılan oluşturucu yoktur. Tüm oluşturucular yalnızca CPU üzerinde çalıştırılır. Direct3D hedefinde yürütülemezler.

explicit array(
    const Concurrency::extent<_Rank>& _Extent) restrict(cpu);

explicit array(
    int _E0) restrict(cpu);

explicit array(
    int _E0,
    int _E1) restrict(cpu);

explicit array(
    int _E0,
    int _E1,
    int _E2) restrict(cpu);

array(
    const Concurrency::extent<_Rank>& _Extent,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

array(
    int _E0,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

array(
    int _E0,
    int _E1,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

array(
    int _E0,
    int _E1,
    int _E2,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

array(
    const Concurrency::extent<_Rank>& _Extent,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

array(
    int _E0,
    accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

array(
    int _E0,
    int _E1,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

array(
    int _E0,
    int _E1,
    int _E2,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first,
    _InputIterator _Src_last) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    _InputIterator _Src_first,
    _InputIterator _Src_last) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    _InputIterator _Src_first) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    _InputIterator _Src_first,
    _InputIterator _Src_last) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    _InputIterator _Src_first) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2,
    _InputIterator _Src_first,
    _InputIterator _Src_last) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2,
    _InputIterator _Src_first) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    _InputIterator _Src_first,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    _InputIterator _Src_first,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av,
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2,
    _InputIterator _Src_first,
    Concurrency::accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    const Concurrency::extent<_Rank>& _Extent,
    _InputIterator _Src_first,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    _InputIterator _Src_first,
    _InputIterator _Src_last,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0, _InputIterator _Src_first,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1, _InputIterator _Src_first, _InputIterator _Src_last,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1, _InputIterator _Src_first,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2, _InputIterator _Src_first, _InputIterator _Src_last,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

template <typename _InputIterator>
array(
    int _E0,
    int _E1,
    int _E2, _InputIterator _Src_first,
    Concurrency::accelerator_view _Av,
    Concurrency::accelerator_view _Associated_Av) restrict(cpu);

explicit array(
    const array_view<const value_type, _Rank>& _Src) restrict(cpu);

array(
    const array_view<const value_type, _Rank>& _Src,
    accelerator_view _Av
    access_type _Cpu_access_type = access_type_auto) restrict(cpu);

array(
    const array_view<const value_type, _Rank>& _Src,
    accelerator_view _Av,
    accelerator_view _Associated_Av) restrict(cpu);

array(const array& _Other) restrict(cpu);

array(array&& _Other) restrict(cpu);

Parametreler

_Associated_Av
Dizinin tercih edilen hedef konumunu belirten bir accelerator_view.

_Av
Dizinin konumunu belirten bir accelerator_view nesnesi.

_Cpu_access_type
CPU'da dizi için istenen access_type . Bu parametre, CPU access_type belirlemesini access_type_auto çalışma zamanına bırakmak için varsayılan bir değere sahiptir. Dizi için gerçek CPU access_type yöntemi kullanılarak get_cpu_access_type sorgulanabilir.

_Kapsam
Dizinin her boyutundaki kapsam.

_E0
Bu bölümün kapsamının en önemli bileşeni.

_E1
Bu bölümün kapsamının bir sonraki en önemli bileşeni.

_E2
Bu bölümün kapsamının en az önemli bileşeni.

_InputIterator
Giriş yineleyicisinin türü.

_Src
Kopyalamaya itiraz etmek için.

_Src_first
Kaynak kapsayıcıda başlangıç yineleyicisi.

_Src_last
Kaynak kapsayıcıda son yineleyici.

_Diğer
Diğer veri kaynağı.

_Rütbe
Bölümün sırası.

value_type
Kopyalanan öğelerin veri türü.

associated_accelerator_view

Nesnenin örneğini oluşturmak array için bir hazırlama oluşturucu çağrıldığında parametre olarak geçirilen ikinci accelerator_view nesnesini alır.

__declspec(property(get= get_associated_accelerator_view)) Concurrency::accelerator_view associated_accelerator_view;

copy_to

öğesinin array içeriğini başka bir arrayöğesine kopyalar.

void copy_to(
    array<value_type, _Rank>& _Dest) const ;

void copy_to(
    array_view<value_type, _Rank>& _Dest) const ;

Parametreler

_Dest
Kopyalanacak array_view nesnesi.

cpu_access_type

Bu dizi için izin verilen CPU access_type alır.

__declspec(property(get= get_cpu_access_type)) access_type cpu_access_type;

veriler

ham verilerine arraybir işaretçi döndürür.

value_type* data() restrict(amp, cpu);

const value_type* data() const restrict(amp, cpu);

Dönüş Değeri

Dizinin ham verilerinin işaretçisi.

kapsam

şeklini arraytanımlayan extent nesnesini alır.

__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent;

get_accelerator_view

Nesnenin ayrıldığı konumu array temsil eden accelerator_view nesnesini döndürür. Bu özelliğe yalnızca CPU üzerinden erişilebilir.

Concurrency::accelerator_view get_accelerator_view() const;

Dönüş Değeri

accelerator_view Nesnenin ayrıldığı konumu array temsil eden nesne.

get_associated_accelerator_view

Nesnenin örneğini oluşturmak array için bir hazırlama oluşturucu çağrıldığında parametre olarak geçirilen ikinci accelerator_view nesnesini alır.

Concurrency::accelerator_view get_associated_accelerator_view() const ;

Dönüş Değeri

İkinci accelerator_view nesnesi hazırlama oluşturucusna geçirildi.

get_cpu_access_type

Bu dizi için izin verilen CPU access_type döndürür.

access_type get_cpu_access_type() const restrict(cpu);

Dönüş Değeri

get_extent

öğesinin extent nesnesini arraydöndürür.

Concurrency::extent<_Rank> get_extent() const restrict(amp,cpu);

Dönüş Değeri

extent nesnesinin arraynesnesi.

operator std::vector<value_type>

Diziyi örtük olarak std::vector nesnesine dönüştürmek için kullanır copy(*this, vector) .

operator std::vector<value_type>() const restrict(cpu);

Parametreler

value_type
Vektör öğelerinin veri türü.

Dönüş Değeri

Dizide yer alan verilerin bir kopyasını içeren türündeki vector<T> bir nesne.

operator()

Parametreler tarafından belirtilen öğe değerini döndürür.

value_type& operator() (const index<_Rank>& _Index) restrict(amp,cpu);

const value_type& operator() (const index<_Rank>& _Index) cons  t restrict(amp,cpu);

value_type& operator() (int _I0, int _I1) restrict(amp,cpu);

const value_type& operator() (int _I0, int _I1) const restrict(amp,cpu)  ;

value_type& operator() (int _I0, int _I1, int _I2) restrict(amp,cpu);

const value_type& operator() (int _I0, int _I1, int _I2) const restrict(amp,cpu);

typename details::_Projection_result_type<value_type,_Rank>::_Result_type operator()(int _I) restrict(amp,cpu);

typename details::_Projection_result_type<value_type,_Rank>::_Const_result_type operator()(int _I) const restrict(amp,cpu);

Parametreler

_Dizin
öğesinin konumu.

_I0
Bu bölümün kaynağının en önemli bileşeni.

_I1
Bu bölümün kaynağının bir sonraki en önemli bileşeni.

_I2
Bu bölümün kaynağının en az önemli bileşeni.

_Ben
öğesinin konumu.

Dönüş Değeri

Parametreler tarafından belirtilen öğe değeri.

işleç[]

Belirtilen dizindeki öğesini döndürür.

value_type& operator[](const index<_Rank>& _Index) restrict(amp,cpu);

const value_type& operator[]
    (const index<_Rank>& _Index) const restrict(amp,cpu);

typename details::_Projection_result_type<value_type,_Rank>::_Result_type operator[](int _i) restrict(amp,cpu);

typename details::_Projection_result_type<value_type,_Rank>::_Const_result_type operator[](int _i) const restrict(amp,cpu);

Parametreler

_Dizin
Dizin.

_Ben
Dizin.

Dönüş Değeri

Belirtilen dizindeki öğesi.

operator=

Belirtilen array nesnenin içeriğini kopyalar.

array& operator= (const array& _Other) restrict(cpu);

array& operator= (array&& _Other) restrict(cpu);

array& operator= (
    const array_view<const value_type, _Rank>& _Src) restrict(cpu);

Parametreler

_Diğer
Kopyalanacak array nesne.

_Src
Kopyalanacak array nesne.

Dönüş Değeri

Bu array nesneye bir başvuru.

rütbe

öğesinin derecesini arraydepolar.

static const int rank = _Rank;

reinterpret_as

İsteğe bağlı olarak kaynak diziden farklı bir değer türüne sahip olabilecek tek boyutlu bir array_view ile diziyi yeniden yorumlar.

Sözdizimi

template <typename _Value_type2>
array_view<_Value_type2,1> reinterpret_as() restrict(amp,cpu);

template <typename _Value_type2>
array_view<const _Value_type2, 1> reinterpret_as() const restrict(amp,cpu);

Parametreler

_Value_type2
Döndürülen verilerin veri türü.

Dönüş Değeri

Öğe türü T'den ElementType'a yeniden yorumlanmış ve derece N'den 1'e düşürülmüş diziyi temel alan bir array_view veya const array_view nesnesi.

Açıklamalar

Bazen çok boyutlu bir diziyi, muhtemelen kaynak diziden farklı bir değer türüne sahip doğrusal, tek boyutlu bir dizi gibi görüntülemek kullanışlı olabilir. Bunu başarmak için bu yöntemi kullanabilirsiniz. Dikkat Bir dizi nesnesini farklı bir değer türü kullanarak yeniden yorumlamak güvenli olmayabilecek bir işlemdir. Bu işlevi dikkatli bir şekilde kullanmanızı öneririz.

Aşağıdaki kod bir örnek sağlar.

struct RGB { float r; float g; float b; };

array<RGB,3>  a = ...;
array_view<float,1> v = a.reinterpret_as<float>();

assert(v.extent == 3*a.extent);

section

Belirtilen kaynakta ve isteğe bağlı olarak, belirtilen uzantıya sahip nesnenin bir alt bölümü array döndürür.

array_view<value_type,_Rank> section(
    const Concurrency::index<_Rank>& _Section_origin,
    const Concurrency::extent<_Rank>& _Section_extent) restrict(amp,cpu);

array_view<const value_type,_Rank> section(
    const Concurrency::index<_Rank>& _Section_origin,
    const Concurrency::extent<_Rank>& _Section_extent) const restrict(amp,cpu);

array_view<value_type,_Rank> section(
    const Concurrency::extent<_Rank>& _Ext) restrict(amp,cpu);

array_view<const value_type,_Rank> section(
    const Concurrency::extent<_Rank>& _Ext) const restrict(amp,cpu);

array_view<value_type,_Rank> section(
    const index<_Rank>& _Idx) restrict(amp,cpu);

array_view<const value_type,_Rank> section(
    const index<_Rank>& _Idx) const restrict(amp,cpu);

array_view<value_type,1> section(
    int _I0,
    int _E0) restrict(amp,cpu);

array_view<const value_type,1> section(
    int _I0,
    int _E0) const restrict(amp,cpu);

array_view<value_type,2> section(
    int _I0,
    int _I1,
    int _E0,
    int _E1) restrict(amp,cpu);

array_view<const value_type,2> section(
    int _I0,
    int _I1,
    int _E0,
    int _E1) const restrict(amp,cpu);

array_view<value_type,3> section(
    int _I0,
    int _I1,
    int _I2,
    int _E0,
    int _E1,
    int _E2) restrict(amp,cpu);

array_view<const value_type,3> section(
    int _I0,
    int _I1,
    int _I2,
    int _E0,
    int _E1,
    int _E2) const restrict(amp,cpu);

Parametreler

_E0
Bu bölümün kapsamının en önemli bileşeni.

_E1
Bu bölümün kapsamının bir sonraki en önemli bileşeni.

_E2
Bu bölümün kapsamının en az önemli bileşeni.

_Ext
bölümün kapsamını belirten extent nesnesi. Çıkış noktası 0'dır.

_Idx
Kaynağın konumunu belirten dizin nesnesi. Alt bölüm, kapsamın geri kalanıdır.

_I0
Bu bölümün kaynağının en önemli bileşeni.

_I1
Bu bölümün kaynağının bir sonraki en önemli bileşeni.

_I2
Bu bölümün kaynağının en az önemli bileşeni.

_Rütbe
Bölümün sırası.

_Section_extent
bölümün kapsamını belirten extent nesnesi.

_Section_origin
Kaynağın konumunu belirten dizin nesnesi.

value_type
Kopyalanan öğelerin veri türü.

Dönüş Değeri

Belirtilen kaynakta ve isteğe bağlı olarak, belirtilen uzantıya sahip nesnenin bir alt bölümü array döndürür. Yalnızca index nesne belirtildiğinde, alt bölüm ilişkili kılavuzda nesnedeki öğelerin dizinlerinden daha büyük dizinleri olan tüm öğeleri index içerir.

view_as

Bu diziyi farklı bir derecelendirmenin array_view olarak yeniden yorumlar.

template <int _New_rank>
array_view<value_type,_New_rank> view_as(
    const Concurrency::extent<_New_rank>& _View_extent) restrict(amp,cpu);

template <int _New_rank>
array_view<const value_type,_New_rank> view_as(
    const Concurrency::extent<_New_rank>& _View_extent) const restrict(amp,cpu);

Parametreler

_New_rank
Parametre olarak geçirilen nesnenin extent sırası.

_View_extent
Yeni array_view nesnesini oluşturmak için kullanılan kapsam.

value_type
Hem özgün array nesnedeki hem de döndürülen array_view nesnedeki öğelerin veri türü.

Dönüş Değeri

Array_view nesnesi oluşturulur.

Ayrıca bkz.

Eşzamanlılık Ad Alanı (C++ AMP)