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ı.
Ü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ı | Nesneyi yok eder array . |
Genel Yöntemler
Veri Akışı Adı | 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 array için bir hazırlama oluşturucu çağrıldığında parametre olarak geçirilen ikinci accelerator_view nesnesini alır. |
get_cpu_access_type | Dizinin access_type döndürür. 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. |
section | Belirtilen kaynakta ve isteğe bağlı olarak, belirtilen uzantıya sahip nesnenin bir alt bölümü array döndürür. |
view_as | nesnesinden array oluşturulduğunda 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 std::vector nesnesine dönüştürmek için kullanırcopy(*this, vector) . |
operator() | Parametreler tarafından belirtilen öğe değerini döndürür. |
işleç[] | Belirtilen dizindeki öğesini döndürür. |
operator= | Belirtilen array nesnenin içeriğini bu nesneye kopyalar. |
Genel Sabitler
Veri Akışı Adı | Açıklama |
---|---|
rank Sabiti | Dizinin derecesini depolar. |
Ortak Veri Üyeleri
Veri Akışı Adı | Açıklama |
---|---|
accelerator_view | Dizinin ayrıldığı konumu temsil eden accelerator_view nesnesini alır. Bu özelliğe yalnızca CPU üzerinden erişilebilir. |
associated_accelerator_view | Nesnenin örneğini oluşturmak array için bir hazırlama oluşturucu çağrıldığında parametre olarak geçirilen ikinci accelerator_view nesnesini 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 kapsamı 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ü, T
hedef hızlandırıcıyla uyumlu bir türde olmalıdır. dizisinin derecelendirmesi , N
(dizisi statik olarak belirlenir ve türün bir parçasıdır), ancak dizinin kapsamı çalışma zamanı tarafından belirlenir ve sınıfı extent<N>
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 (diğer dizilere ve diğer dizilerden kopyalamak için kullanılabilir).
Konak-cihaz kopyalarında hızlı bir aracı görevi görmesi için bir hazırlama nesnesi olarak.
Devralma Hiyerarşisi
array
Gereksinimler
Üst bilgi: amp.h
Ad Alanı: Eşzamanlılık
~dizi
Nesneyi yok eder array
.
~array() restrict(cpu);
accelerator_view
Dizinin ayrıldığı 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'da dizi için istenen access_type . Bu parametre, CPU access_type
belirlemesini access_type_auto
ç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ıda son yineleyici.
_Diğer
Diğer veri kaynağı.
_Rütbe
Bölümün sırası.
value_type
Kopyalanan öğelerin veri türü.
associated_accelerator_view
Nesnenin örneğini oluşturmak array
için bir hazırlama oluşturucu çağrıldığında parametre olarak geçirilen ikinci accelerator_view nesnesini 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_access_type
Bu dizi için izin verilen CPU access_type alır.
__declspec(property(get= get_cpu_access_type)) access_type cpu_access_type;
veriler
ham verilerine array
bir 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
şeklini array
tanımlayan extent nesnesini alır.
__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent;
get_accelerator_view
Nesnenin ayrıldığı konumu array
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ığı konumu array
temsil eden nesne.
get_associated_accelerator_view
Nesnenin örneğini oluşturmak array
için bir hazırlama oluşturucu çağrıldığında parametre olarak geçirilen ikinci accelerator_view nesnesini 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_access_type
Bu dizi için izin verilen CPU access_type döndürür.
access_type get_cpu_access_type() const restrict(cpu);
Dönüş Değeri
get_extent
öğesinin extent nesnesini array
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.
işleç[]
Belirtilen dizindeki öğesini 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 öğesi.
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
nesneye bir başvuru.
rütbe
öğesinin derecesini array
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
Öğe türü T'den ElementType'a yeniden yorumlanmış ve derece N'den 1'e düşürülmüş diziyi temel alan 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);
section
Belirtilen kaynakta ve isteğe bağlı olarak, belirtilen uzantıya sahip nesnenin bir alt bölümü array
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
Belirtilen kaynakta ve isteğe bağlı olarak, belirtilen uzantıya sahip nesnenin bir alt bölümü array
döndürür. Yalnızca index
nesne belirtildiğinde, alt bölüm ilişkili kılavuzda nesnedeki öğelerin dizinlerinden daha büyük dizinleri olan tüm öğeleri index
içerir.
view_as
Bu diziyi farklı bir derecelendirmenin 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.