Aracılığıyla paylaş


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ı.

Members

Ortak Oluşturucular

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

Genel Yöntemler

İsim 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 için bir staging constructor çağrıldığında, ikinci array nesnesini parametre olarak alır.
get_cpu_access_type Access_type'ı döndürür dizinin. 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.
bölüm Nesnenin array belirli bir başlangıç noktasında bulunan ve isteğe bağlı olarak belirtilen bir genişliğe sahip bir alt bölümünü döndürür.
olarak_görüntüle nesnesinden oluşturulan bir array nesnesi döndürür.

Ortak İşleçler

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

Genel Sabitler

İsim Açıklama
rank Sabit Dizinin derecesini depolar.

Ortak Veri Üyeleri

İsim Açıklama
accelerator_view Alır, dizinin tahsis edildiği konumu temsil eden accelerator_view nesnesini. Bu özelliğe yalnızca CPU üzerinden erişilebilir.
associated_accelerator_view Nesnenin örneğini oluşturmak için bir staging constructor çağrıldığında, ikinci array nesnesini parametre olarak 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 boyutu 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. Dizinin derecesi, N(dizi statik olarak belirlenir ve türün bir parçasıdır), ancak dizinin boyutu çalışma zamanı tarafından belirlenir ve extent<N> sınıfı 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 kullanılır (bu da diğer dizilere veri kopyalamak ve diğer dizilerden veri almak için kullanılabilir).

  • Ev sahibinden cihaza kopyalamalarda hızlı bir ara birim olarak işlev görmek için geçici bir nesne olarak.

Devralma Hiyerarşisi

array

Gereksinimler

Üst Bilgisi: amp.h

Ad Alanı: Eşzamanlılık

~dizi

array nesnesini yok eder.

~array() restrict(cpu);

hızlandırıcı_görünüm

Alır, dizinin tahsis edildiği konumu temsil eden accelerator_view nesnesini. Bu özelliğe yalnızca CPU üzerinden erişilebilir.

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

array

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 üzerinde dizi için istenen access_type. Bu parametre, CPU access_type_auto belirlemesini access_type ç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ının sonunu belirten bir yineleyici.

_Diğer
Diğer veri kaynağı.

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

value_type
Kopyalanan öğelerin veri türü.

ilişkili_hızlandırıcı_görünümü

Nesnenin örneğini oluşturmak için bir staging constructor çağrıldığında, ikinci array nesnesini parametre olarak 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_erişim_türü

Bu dizi için izin verilen CPU access_type'i elde eder.

__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

Extent nesnesini alır ve bu nesne array şeklinin tanımını yapar.

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

hızlandırıcı_görünüm_al

nesnesinin tahsis edildiği konumu temsil eden array 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ığı yeri temsil eden array nesnesi.

ilişkili hızlandırıcı görünümünü al

Nesnenin örneğini oluşturmak için bir staging constructor çağrıldığında, ikinci array nesnesini parametre olarak 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_erişim_tipi

Bu dizide izin verilen CPU erişim türünü döndürür.

access_type get_cpu_access_type() const restrict(cpu);

Dönüş Değeri

get_extent

extent nesnesini array öğesinden döndürür.

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

Dönüş Değeri

extent nesnesinin array nesnesi.

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.

operatör[]

Belirtilen dizindeki öğeyi 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 eleman.

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 nesnesine bir referans.

sıra

array öğesinin sırasını depolar.

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

Diziyi temel alan, öğe türü T'den ElementType'a yeniden yorumlanmış ve derecesi N'den 1'e düşürülmüş 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);

bölüm

Nesnenin array belirli bir başlangıç noktasında bulunan ve isteğe bağlı olarak belirtilen bir genişliğe sahip bir alt bölümünü 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

Nesnenin array belirli bir başlangıç noktasında bulunan ve isteğe bağlı olarak belirtilen bir genişliğe sahip bir alt bölümünü döndürür. Yalnızca index nesnesi belirtildiğinde, alt bölüm, index nesnesindeki öğelerin dizinlerinden daha büyük dizinleri olan tüm öğeleri ilişkili kılavuzda içerir.

olarak_görüntüle

Bu diziyi farklı bir dereceye sahip 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 bakınız

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