Megosztás:


tömbosztály

Az adatok gyorsítóba való áthelyezéséhez használt adattárolót jelöli.

Szemantika

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

Paraméterek

value_type
Az adatok elemtípusa.

_Rang
A tömb rangja.

Tagok

Nyilvános konstruktorok

Név Leírás
tömbkonstruktor Inicializálja a array osztály új példányát.
~tömb destruktor Elpusztítja az array objektumot.

Nyilvános metódusok

Név Leírás
copy_to Másolja a tömb tartalmát egy másik tömbbe.
adat A tömb nyers adataira mutató mutatót ad vissza.
get_accelerator_view A tömb lefoglalási helyét képviselő accelerator_view objektumot adja vissza. Ez a tulajdonság csak a processzoron érhető el.
get_associated_accelerator_view Lekéri a második accelerator_view objektumot, amely paraméterként lesz átadva, amikor egy átmeneti konstruktort meghív az array objektum példányosítására.
get_cpu_access_type A tömb access_type adja vissza. Ez a módszer csak a processzoron érhető el.
get_extent A tömb mértékobjektumát adja vissza.
reinterpret_as Egydimenziós tömböt ad vissza, amely az objektum összes elemét array tartalmazza.
szakasz A megadott forrásnál lévő és adott kiterjedésű objektum alszakaszát array adja vissza.
view_as Az objektumból array létrehozott array_view objektumot adja vissza.

Nyilvános operátorok

Név Leírás
operator std::vector<value_type> A copy(*this, vector) tömb implicit átalakítása std::vector objektummá.
operátor() A paraméterek által megadott elemértéket adja vissza.
operátor[] A megadott indexben lévő elemet adja vissza.
operátor= Másolja a megadott array objektum tartalmát ebbe a fájlba.

Nyilvános állandók

Név Leírás
rang állandó A tömb rangját tárolja.

Nyilvános adatok tagjai

Név Leírás
accelerator_view Lekéri az accelerator_view objektumot, amely a tömb lefoglalási helyét jelöli. Ez a tulajdonság csak a processzoron érhető el.
associated_accelerator_view Lekéri a második accelerator_view objektumot, amely paraméterként lesz átadva, amikor egy átmeneti konstruktort meghív az array objektum példányosítására.
cpu_access_type Lekéri a access_type , amely azt jelzi, hogy a processzor hogyan férhet hozzá a tömb tárolóhelyéhez.
kiterjedés Lekéri a tömb alakját meghatározó mértéket.

Megjegyzések

A típus array<T,N> egy sűrű és szabályos (nem szaggatott) N-dimenziós tömböt jelöl, amely egy adott helyen található, például egy gázpedál vagy a PROCESSZOR. A tömb Telemeinek adattípusa a célgyorsítóval kompatibilis típus. Bár a rang, N( a tömb statikusan van meghatározva, és a típus része, a tömb mértékét a futtatókörnyezet határozza meg, és osztály extent<N>használatával fejezi ki .

A tömbök tetszőleges számú dimenzióval rendelkezhetnek, bár bizonyos funkciók az 1., a 2. és a 3. ranggal rendelkező objektumokra array specializálódtak. Ha kihagyja a dimenzióargumentumot, az alapértelmezett érték 1.

A tömbadatok egybefüggően lesznek elhelyezve a memóriában. A legkevésbé jelentős dimenzióban egymástól eltérő elemek a memóriában szomszédosak.

A tömbök logikailag értéktípusoknak minősülnek, mivel ha egy tömböt átmásolnak egy másik tömbbe, a rendszer mély másolatot készít. Két tömb soha nem mutat ugyanarra az adatra.

A array<T,N> típust több forgatókönyvben is használják:

  • Adattárolóként, amely gyorsítón végzett számításokhoz használható.

  • Adattárolóként a gazda cpu memóriájának tárolására (amely más tömbökbe és tömbökből másolható).

  • Átmeneti objektumként, amely gyors közvetítőként szolgál a gazdagépről az eszközre másolt példányokban.

Öröklési hierarchia

array

Követelmények

fejléc: amp.h

névtér: egyidejűség

~tömb

Elpusztítja az array objektumot.

~array() restrict(cpu);

accelerator_view

Lekéri az accelerator_view objektumot, amely a tömb lefoglalási helyét jelöli. Ez a tulajdonság csak a processzoron érhető el.

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

tömb

Inicializálja a tömbosztály új példányát. Nincs alapértelmezett konstruktor a következőhöz array<T,N>: . Minden konstruktor csak a CPU-n fut. Nem hajthatók végre Direct3D-célon.

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);

Paraméterek

_Associated_Av
A tömb elsődleges célhelyét meghatározó accelerator_view.

_Av
Egy accelerator_view objektum, amely meghatározza a tömb helyét.

_Cpu_access_type
A processzor tömbjének kívánt access_type . Ez a paraméter alapértelmezett értéke access_type_auto , hogy a cpu-meghatározást access_type a futtatókörnyezetre hagyja. A tömb tényleges processzora access_type lekérdezhető a get_cpu_access_type módszerrel.

_Kiterjedés
A tömb minden dimenziójának mértéke.

_E0
A szakasz terjedelmének legjelentősebb összetevője.

_E1
Ennek a szakasznak a következő-a-legfontosabb összetevője.

_E2
Ennek a szakasznak a legkisebb jelentős összetevője.

_InputIterator
A bemeneti iterátor típusa.

_Src
Objektum másolása.

_Src_first
Egy kezdő iterátor a forrástárolóba.

_Src_last
Záró iterátor a forrástárolóba.

_Más
Egyéb adatforrás.

_Rang
A szakasz rangja.

value_type
A másolt elemek adattípusa.

associated_accelerator_view

Lekéri a második accelerator_view objektumot, amely paraméterként lesz átadva, amikor egy átmeneti konstruktort meghív az array objektum példányosítására.

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

copy_to

Másolja a fájl tartalmát array egy másikba array.

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

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

Paraméterek

_Dest
A array_view objektum, amelybe másolni szeretne.

cpu_access_type

A tömbhöz engedélyezett cpu-access_type.

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

adat

Egy mutatót ad vissza a nyers adatokhoz.array

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

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

Visszaadott érték

Mutató a tömb nyers adataira.

szegmens

Lekéri az alakzatot meghatározó mértékobjektumotarray.

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

get_accelerator_view

A accelerator_view objektumot adja vissza, amely az objektum lefoglalási array helyét jelöli. Ez a tulajdonság csak a processzoron érhető el.

Concurrency::accelerator_view get_accelerator_view() const;

Visszaadott érték

Az accelerator_view objektum lefoglalási helyét array jelképező objektum.

get_associated_accelerator_view

Lekéri a második accelerator_view objektumot, amely paraméterként lesz átadva, amikor egy átmeneti konstruktort meghív az array objektum példányosítására.

Concurrency::accelerator_view get_associated_accelerator_view() const ;

Visszaadott érték

A második accelerator_view objektum átadva az előkészítési konstruktornak.

get_cpu_access_type

A tömbhöz engedélyezett cpu-access_type adja vissza.

access_type get_cpu_access_type() const restrict(cpu);

Visszaadott érték

get_extent

A mérték objektumát arrayadja vissza.

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

Visszaadott érték

arrayA extent .

operator std::vector<value_type>

A copy(*this, vector) tömb implicit átalakítása std::vector objektummá.

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

Paraméterek

value_type
A vektor elemeinek adattípusa.

Visszaadott érték

Olyan típusú vector<T> objektum, amely a tömbben található adatok másolatát tartalmazza.

operátor()

A paraméterek által megadott elemértéket adja vissza.

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);

Paraméterek

_Index
Az elem helye.

_I0
A szakasz eredetének legfontosabb összetevője.

_I1
A szakasz eredetének következő legfontosabb összetevője.

_I2
A szakasz eredetének legkevésbé jelentős összetevője.

_Én
Az elem helye.

Visszaadott érték

A paraméterek által megadott elemérték.

operátor[]

A megadott indexben lévő elemet adja vissza.

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);

Paraméterek

_Index
Az index.

_Én
Az index.

Visszaadott érték

A megadott indexben lévő elem.

operátor=

Másolja a megadott array objektum tartalmát.

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);

Paraméterek

_Más
A array másolandó objektum.

_Src
A array másolandó objektum.

Visszaadott érték

Hivatkozás erre a array objektumra.

rangsorol

Tárolja a rangot a array.

static const int rank = _Rank;

reinterpret_as

Újraértelmezi a tömböt egy egydimenziós array_view, amely opcionálisan más értéktípusú lehet, mint a forrástömb.

Szemantika

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);

Paraméterek

_Value_type2
A visszaadott adatok adattípusa.

Visszaadott érték

A tömbön alapuló array_view vagy const array_view objektum, amelynek elemtípusa T-ről ElementType-ra van átértelmezve, a rang pedig N-ről 1-re csökkent.

Megjegyzések

Néha célszerű úgy tekinteni egy többdimenziós tömböt, mintha lineáris, egydimenziós tömb lenne, esetleg más értéktípussal, mint a forrástömb. Ezt a módszert használhatja ennek eléréséhez. Figyelmeztet Egy tömbobjektum más értéktípussal történő újraértelmezése potenciálisan nem biztonságos művelet. Javasoljuk, hogy körültekintően használja ezt a funkciót.

Az alábbi kód egy példát mutat be.

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);

szakasz

A megadott forrásnál lévő és adott kiterjedésű objektum alszakaszát array adja vissza.

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);

Paraméterek

_E0
A szakasz terjedelmének legjelentősebb összetevője.

_E1
Ennek a szakasznak a következő-a-legfontosabb összetevője.

_E2
Ennek a szakasznak a legkisebb jelentős összetevője.

_Ext
A szakasz mértékét meghatározó mértékobjektum . A forrás 0.

_Idx
A forrás helyét meghatározó indexobjektum . Az alszakasz a mérték többi része.

_I0
A szakasz eredetének legfontosabb összetevője.

_I1
A szakasz eredetének következő legfontosabb összetevője.

_I2
A szakasz eredetének legkevésbé jelentős összetevője.

_Rang
A szakasz rangja.

_Section_extent
A szakasz mértékét meghatározó mértékobjektum .

_Section_origin
A forrás helyét meghatározó indexobjektum .

value_type
A másolt elemek adattípusa.

Visszaadott érték

A megadott forrásnál lévő és adott kiterjedésű objektum alszakaszát array adja vissza. Ha csak az index objektum van megadva, az alszakasz a társított rács összes olyan elemét tartalmazza, amely az objektum elemeinek index indexeinél nagyobb indexekkel rendelkezik.

view_as

Ezt a tömböt újraértelmezi egy másik rangú array_view .

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);

Paraméterek

_New_rank
A paraméterként átadott objektum rangja extent .

_View_extent
Az új array_view objektum létrehozásához használt mérték.

value_type
Az eredeti array és a visszaadott array_view objektum elemeinek adattípusa.

Visszaadott érték

A array_view létrehozott objektum.

Lásd még

Egyidejűség névtere (C++ AMP)