Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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ı |
array nesnesini yok eder. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| copy_to | Dizinin içeriğini başka bir diziye kopyalar. |
| veri | 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 |
array nesnesinden oluşturulan 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 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
| Veri Akışı Adı | Açıklama |
|---|---|
| rank Sabit | Dizinin derecesini depolar. |
Ortak Veri Üyeleri
| Veri Akışı Adı | 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 bilgi: amp.h
Ad Alanı: Eşzamanlılık
~dizi
array nesnesini yok eder.
~array() restrict(cpu);
hızlandırıcı_görünüm
Dizinin tahsis edildiği 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 ü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
array nesnesinin tahsis edildiği konumu 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ığı 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
array nesnesinin extent 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.
_I
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
Belirtilen orijinde ve isteğe bağlı olarak belirtilen genişliğe sahip olan array nesnesinin 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.