Megosztás a következőn keresztül:


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

érték_típus (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 módszerek

Név Leírás
másolás_ide Másolja a tömb tartalmát egy másik tömbbe.
adat A tömb nyers adataira mutató mutatót ad vissza.
gyorsító nézet lekérése 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 Visszaadja a access_type értékét a tömbnek. 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 kezdőpontnál található objektum alszakaszát adja vissza array, amely adott kiterjedésű, és opcionálisan rendelkezik ezzel a kiterjedéssel.
view_as Az objektumból létrehozott 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.
operator[] 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.
kapcsolódó_gyorsító_nézet 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ó kiterjedést.

Megjegyzések

A típus array<T,N> egy sűrű és szabályos (nem szaggatott) N-dimenziós tömböt képvisel, amely egy adott helyen található, például egy gyorsító 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 és a típus részévé van meghatározva, a tömb kiterjedését a futásidő határozza meg, amit az extent<N> osztály használatával fejez 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ó, amely a gazda CPU-hoz tartozó memóriát tartalmazza, és más tömbökbe vagy 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

Header: amp.h

névtér: konkurencia

~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 felületen.

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
Az accelerator_view meghatározza a tömb elsődleges célhelyét.

_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, és a CPU meghatározást a futtatókörnyezetre access_type 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 második legjelentősebb összetevője.

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

_InputIterator
A bemeneti iterátor típusa.

_Src
A másolás elleni tiltakozás.

_Src_first
Egy kezdeti iterátor a forrástárolóban.

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

_Más
Egyéb adatforrás.

_Rang
A szakasz rangja.

érték_típus (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

Lekéri a tömbhöz engedélyezett CPU-hozzáférési típus.

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

adat

Egy mutatót ad vissza a array nyers adataihoz.

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

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

Visszaadott érték

Mutató a tömb nyers adataira.

szegmens

Megszerzi az alakzatot meghatározó kiterjedési objektumotarray.

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

get_gyorsító_nézet

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 objektumot jelképező helyet az a array objektum képviseli, ahol az lefoglalásra került.

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

Az a CPU hozzáférési típus, amely engedélyezett ehhez a tömbhöz, visszaadásra kerül.

access_type get_cpu_access_type() const restrict(cpu);

Visszaadott érték

get_extent

A kiterjedés objektumát arrayadja vissza.

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

Visszaadott érték

A extent objektuma array.

operator std::vector<value_type>

Alkalmazza a copy(*this, vector)-t a tömb implicit std::vector objektummá alakításához.

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

Paraméterek

érték_típus (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 az objektum, amelyről másolunk.

_Src
A array az objektum, amelyről másolunk.

Visszaadott érték

Hivatkozás erre a array objektumra.

rangsorol

A(z) array rangját tárolja.

static const int rank = _Rank;

reinterpret_as

Újraértelmezi a tömböt egy egydimenziós array_view-en keresztül, amely opcionálisan más értéktípussal rendelkezhet, 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 kezdőpontnál található objektum alszakaszát adja vissza array, amely adott kiterjedésű, és opcionálisan rendelkezik ezzel a kiterjedéssel.

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 második legjelentősebb ö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 kiindulópont 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 .

érték_típus (value_type)
A másolt elemek adattípusa.

Visszaadott érték

A megadott kezdőpontnál található objektum alszakaszát adja vissza array, amely adott kiterjedésű, és opcionálisan rendelkezik ezzel a kiterjedéssel. 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

Az adott tömböt egy másik rangú array_view-ként értelmezi újra.

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.

érték_típus (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)