Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Stellt einen Datencontainer dar, der zum Übertragen von Daten auf einen Beschleuniger verwendet wird.
Syntax
template <typename value_type, int _Rank>
friend class array;
Parameter
Werttyp
Der Elementtyp der Daten.
_Rang
Der Rang des Arrays.
Mitglieder
Öffentliche Konstruktoren
| Name | Beschreibung |
|---|---|
| Arraykonstruktor | Initialisiert eine neue Instanz der array-Klasse. |
| ~array Destructor | Zerstört das array-Objekt. |
Öffentliche Methoden
| Name | Beschreibung |
|---|---|
| copy_to | Kopiert den Inhalt des array-Objekts in ein anderes array-Objekt. |
| Daten | Gibt einen Zeiger auf die Rohdaten des array-Objekts zurück. |
| get_accelerator_view | Gibt das accelerator_view -Objekt zurück, das die Position darstellt, an der das Array zugeordnet ist. Auf diese Eigenschaft kann nur auf der CPU zugegriffen werden. |
| get_associated_accelerator_view | Ruft das zweite accelerator_view-Objekt ab, das als Parameter übergeben wird, wenn ein Stagingkonstruktor aufgerufen wird, um das array Objekt zu instanziieren. |
| get_cpu_access_type | Gibt den access_type des Arrays zurück. Auf diese Methode kann nur auf der CPU zugegriffen werden. |
| get_extent | Gibt das Umfangsobjekt des Arrays zurück. |
| reinterpret_as | Gibt ein eindimensionales Array zurück, das alle Elemente im array-Objekt enthält. |
| Abschnitt | Gibt einen Unterabschnitt des array-Objekts zurück, das sich am angegebenen Ursprung befindet und optional den angegebenen Wertebereich hat. |
| view_as | Gibt ein array_view -Objekt zurück, das aus dem array Objekt erstellt wird. |
Öffentliche Operatoren
| Name | Beschreibung |
|---|---|
operator std::vector<value_type> |
Wird copy(*this, vector) verwendet, um das Array implizit in ein std::vector -Objekt zu konvertieren. |
| operator() | Gibt den Elementwert zurück, der von den Parametern angegeben wird. |
| operator[] | Gibt das Element am angegebenen Index zurück. |
| operator= | Kopiert den Inhalt des angegebenen array-Objekts in dieses Objekt. |
Öffentliche Konstanten
| Name | Beschreibung |
|---|---|
| rank-Konstante | Speichert den Rang des Arrays. |
Öffentliche Datenmitglieder
| Name | Beschreibung |
|---|---|
| accelerator_view | Ruft das accelerator_view-Objekt ab, das den Ort darstellt, an dem das Array zugeordnet ist. Auf diese Eigenschaft kann nur auf der CPU zugegriffen werden. |
| assoziierte_Accelerator_Ansicht | Ruft das zweite accelerator_view-Objekt ab, das als Parameter übergeben wird, wenn ein Stagingkonstruktor aufgerufen wird, um das array Objekt zu instanziieren. |
| CPU-Zugriffsart | Gibt den access_type zurück, der angibt, wie die CPU auf den Speicher des Arrays zugreifen kann. |
| Umfang | Ruft den Wertebereich ab, der die Form des Arrays definiert. |
Hinweise
Der Typ array<T,N> stellt ein dichtes und regelmäßiges (nicht verzweigtes) N-dimensionales Array dar, das sich an einer bestimmten Position befindet, z. B. einem Beschleuniger oder der CPU. Der Datentyp der Elemente im Array ist T, welcher mit dem Zielbeschleuniger kompatibel sein muss. Obwohl der Rang, N, des Arrays statisch ermittelt und Teil des Typs ist, wird der Wertebereich des Arrays durch die Laufzeit bestimmt und durch Verwendung der extent<N>-Klasse ausgedrückt.
Ein Array kann eine beliebige Anzahl Dimensionen haben, obwohl einige Funktionen für array-Objekte mit dem Rang eins, zwei und drei spezialisiert ist. Wenn Sie das Dimensionsargument weglassen, ist der Standardwert 1.
Arrays sind im Arbeitsspeicher hintereinander angeordnet. Elemente, die sich in der unwichtigsten Dimension um eins unterscheiden, grenzen im Arbeitsspeicher aneinander.
Arrays werden logisch als Werttypen betrachtet, da beim Kopieren eines Arrays in ein anderes eine tiefe Kopie ausgeführt wird. Zwei Arrays zeigen nie auf die gleichen Daten.
Der array<T,N>-Typ wird in verschiedenen Szenarien verwendet:
Als Datencontainer, der in Berechnungen auf einem Beschleuniger verwendet werden kann.
Als Datencontainer zum Vorhalten von Arbeitsspeicher auf der Host-CPU (die zum Kopieren in und von anderen Arrays verwendet werden kann).
Als Stagingobjekt, das als schnell vermittelndes Element in Host-zu-Gerät-Kopien fungiert.
Vererbungshierarchie
array
Anforderungen
Kopfzeile: amp.h
Namespace: Gleichzeitigkeit
~Anordnung
Zerstört das array-Objekt.
~array() restrict(cpu);
Beschleunigeransicht
Ruft das accelerator_view -Objekt, das die Position darstellt, an der das Array zugeordnet ist. Auf diese Eigenschaft kann nur auf der CPU zugegriffen werden.
__declspec(property(get= get_accelerator_view)) Concurrency::accelerator_view accelerator_view;
Array
Initialisiert eine neue Instanz der Arrayklasse. Für "array<T,N>" ist kein Standardkonstruktor vorhanden. Alle Konstruktoren werden nur auf der CPU ausgeführt. Sie können nicht auf einem Direct3D-Ziel ausgeführt werden.
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);
Parameter
_Associated_Av
Ein accelerator_view-Objekt, das den bevorzugten Zielort des Arrays angibt.
_Av
Ein accelerator_view-Objekt , das die Position des Arrays angibt.
_Cpu_access_type
Der gewünschte access_type für das Array auf der CPU. Dieser Parameter hat den Standardwert access_type_auto und überlässt die Bestimmung der CPU-access_type-Verwendung der Laufzeitumgebung. Das tatsächliche CPU-access_type-Objekt für das Array kann mithilfe der get_cpu_access_type-Methode abgefragt werden.
_Umfang
Der Umfang in jeder Dimension des Arrays.
_E0
Die wichtigste Komponente des Umfangs dieses Abschnitts.
_E1
Die zweitwichtigste Komponente des Umfangs dieses Abschnitts.
_E2
Die unwichtigste Komponente des Umfangs dieses Abschnitts.
_InputIterator
Der Typ des Eingabeiterators.
_Src
Gegen das Kopieren Einspruch erheben.
_Src_first
Ein Anfangsiterator für den Quellcontainer.
_Src_last
Ein End-Iterator im Quell-Container.
_Andere
Andere Datenquelle.
_Rang
Der Rang des Abschnitts.
Werttyp
Der Datentyp der Elemente, die kopiert werden.
zugeordnete Beschleunigungsansicht
Ruft das zweite accelerator_view-Objekt ab, das als Parameter übergeben wird, wenn ein Stagingkonstruktor aufgerufen wird, um das array Objekt zu instanziieren.
__declspec(property(get= get_associated_accelerator_view)) Concurrency::accelerator_view associated_accelerator_view;
kopieren_nach
Kopiert den Inhalt von array in array.
void copy_to(
array<value_type, _Rank>& _Dest) const ;
void copy_to(
array_view<value_type, _Rank>& _Dest) const ;
Parameter
_Dest
Das array_view Objekt, in das kopiert werden soll.
CPU-Zugriffstyp
Ruft den für dieses Array zulässigen CPU-Zugriffstyp ab.
__declspec(property(get= get_cpu_access_type)) access_type cpu_access_type;
Daten
Gibt einen Zeiger auf die Rohdaten des array-Objekts zurück.
value_type* data() restrict(amp, cpu);
const value_type* data() const restrict(amp, cpu);
Rückgabewert
Ein Zeiger auf die Rohdaten des array-Objekts.
Umfang
Ruft das Bereichsobjekt ab, das die Form von array definiert.
__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent;
get_accelerator_view
Gibt das accelerator_view -Objekt zurück, das die Position darstellt, an der das array Objekt zugeordnet ist. Auf diese Eigenschaft kann nur auf der CPU zugegriffen werden.
Concurrency::accelerator_view get_accelerator_view() const;
Rückgabewert
Das accelerator_view Objekt, das die Position darstellt, an der das array Objekt zugeordnet ist.
get_associated_accelerator_view (Verbundener Beschleuniger-Ansicht erhalten)
Ruft das zweite accelerator_view-Objekt ab, das als Parameter übergeben wird, wenn ein Stagingkonstruktor aufgerufen wird, um das array Objekt zu instanziieren.
Concurrency::accelerator_view get_associated_accelerator_view() const ;
Rückgabewert
Das zweite accelerator_view-Objekt, das an den Staging-Konstruktor übergeben wurde.
get_cpu_access_type
Gibt den erlaubten Zugriffstyp der CPU für dieses Array zurück.
access_type get_cpu_access_type() const restrict(cpu);
Rückgabewert
get_extent
Gibt das Umfangsobjekt der array.
Concurrency::extent<_Rank> get_extent() const restrict(amp,cpu);
Rückgabewert
Das extent-Objekt von array.
operator std::vector<value_type>
Wird copy(*this, vector) verwendet, um das Array implizit in ein std::vector -Objekt zu konvertieren.
operator std::vector<value_type>() const restrict(cpu);
Parameter
Werttyp
Der Datentyp der Elemente des Vektors.
Rückgabewert
Ein Objekt des Typs vector<T>, das eine Kopie der Daten im Array enthält.
operator()
Gibt den Elementwert zurück, der von den Parametern angegeben wird.
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);
Parameter
_Index
Der Speicherort des Elements.
_I0
Die wichtigste Komponente des Ursprungs dieses Abschnitts.
_I1
Die zweitwichtigste Komponente des Ursprungs dieses Abschnitts.
_I2
Die unwichtigste Komponente des Ursprungs dieses Abschnitts.
_Ich
Der Speicherort des Elements.
Rückgabewert
Der Elementwert, der von den Parametern angegeben wird.
operator[]
Gibt das Element am angegebenen Index zurück.
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);
Parameter
_Index
Der Index.
_Ich
Der Index.
Rückgabewert
Das Element am angegebenen Index.
operator =
Kopiert den Inhalt des angegebenen array Objekts.
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);
Parameter
_Andere
Das array-Objekt, aus dem kopiert werden soll.
_Src
Das array-Objekt, aus dem kopiert werden soll.
Rückgabewert
Ein Verweis auf das array-Objekt.
Rang
Speichert den Rang der array.
static const int rank = _Rank;
umdeuten_als
Interpretiert das Array über eine eindimensionale array_view neu, die optional einen anderen Werttyp als das Quellarray aufweisen kann.
Syntax
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);
Parameter
_Value_type2
Der Datentyp der zurückgegebenen Daten.
Rückgabewert
Ein array_view- oder const-array_view-Objekt, das auf dem Array basiert, wobei der Elementtyp von T auf ElementType neu interpretiert wird und der Rang von N auf 1 reduziert wurde.
Hinweise
Manchmal ist es hilfreich, ein mehrdimensionales Array so anzuzeigen, als wäre es ein lineares, eindimensionales Array, möglicherweise mit einem anderen Werttyp als das Quellarray. Sie können dazu diese Methode verwenden. Achtung : Das Erneute Interpretieren eines Arrayobjekts mithilfe eines anderen Werttyps ist ein potenziell unsicherer Vorgang. Es empfiehlt sich, diese Funktion mit Bedacht zu verwenden.
Der folgende Code gibt ein Beispiel.
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);
Abschnitt
Gibt einen Unterabschnitt des array-Objekts zurück, das sich am angegebenen Ursprung befindet und optional den angegebenen Wertebereich hat.
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);
Parameter
_E0
Die wichtigste Komponente des Umfangs dieses Abschnitts.
_E1
Die zweitwichtigste Komponente des Umfangs dieses Abschnitts.
_E2
Die unwichtigste Komponente des Umfangs dieses Abschnitts.
_Ext
Das Umfangsobjekt , das den Umfang des Abschnitts angibt. Der Ursprung ist 0.
_Idx
Das Indexobjekt , das die Position des Ursprungs angibt. Der Unterabschnitt entspricht dem Rest des Umfangs.
_I0
Die wichtigste Komponente des Ursprungs dieses Abschnitts.
_I1
Die zweitwichtigste Komponente des Ursprungs dieses Abschnitts.
_I2
Die unwichtigste Komponente des Ursprungs dieses Abschnitts.
_Rang
Der Rang des Abschnitts.
_Section_extent
Das Umfangsobjekt , das den Umfang des Abschnitts angibt.
_Section_origin
Das Indexobjekt , das die Position des Ursprungs angibt.
Werttyp
Der Datentyp der Elemente, die kopiert werden.
Rückgabewert
Gibt einen Unterabschnitt des array-Objekts zurück, das sich am angegebenen Ursprung befindet und optional den angegebenen Wertebereich hat. Wenn nur das index-Objekt angegeben wird, enthält der Unterabschnitt alle Elemente im zugeordneten Raster, deren Indizes größer sind als die Indizes der Elemente im index-Objekt.
Ansicht_als
Interpretiert dieses Array als array_view eines anderen Ranges neu.
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);
Parameter
_New_rank
Der Rang des extent-Objekts wurde als Parameter übergeben.
_View_extent
Das Ausmaß, in dem das neue array_view-Objekt erstellt wird.
Werttyp
Der Datentyp der Elemente sowohl im ursprünglichen array Objekt als auch im zurückgegebenen array_view Objekt.
Rückgabewert
Das array_view-Objekt , das erstellt wird.