2012-06-21 17 views
5

valarray, bitişik bellek hizalaması var mı?Valarray'ın bitişik bellek hizalaması var mı?

&myValarray[0]'u geçerek yalnızca işaretçiyi alan bir işleve (IPPS'den) bir valarray iletmek istiyorum. Fakat bu yüzden emin olmalıyım ki, valarray'ın bellek hizalaması bitişiktir.

Teşekkürler!

+2

Biri hala valarray kullanıyor mu? – Puppy

+1

@DeadMG Alternatif nedir? Sadece değerleri tutan vektörleri kullanmak ister ve kullanımları, mümkünse, Matlab'da olduğu gibi uygun olmalıdır. Ve valarralar benim ihtiyacımı karşılayabildikleri gibi görünüyorlar (sayısal hesaplamalar için). – Massoud

+0

@DeadMG Düzenli olarak kullanıyorum. Arabirimi, hem skaler hem de vektörlerle çalışan genel algoritmalar yazmayı kolaylaştırır. Ve standardın bir parçası olduğu için, başka bir kütüphaneye güvenmek zorunda değilsiniz. –

cevap

11

Eğer §26.3.2.3 bir valarray tarafından yönetilen bellek, daha sonra cevap nesnesi değil const (C++ 03 en azından eğer, evet, bitişik olması sağlanır olmadığını soruyorsun varsayarsak/3 veya C++ 11, §26.6.2.4/2):

sentezleme & bir == & bir [ı] + j tüm size_t için de geçerlidir değerlendirir [i + j], i ve j, size_t gibi , i + j, sabit olmayan dizinin uzunluğundan daha azdır.

+0

Teşekkürler @Jerry Coffin, ben neden valarray bu gerekliliği yerine getirmek için sabit olamaz, sorabilir miyim? – Massoud

+0

@Massoud: bellek sunulduğunda '' '' const valarray' öğesinin hiçbirinde kullanamazsınız. –

+0

@JerryCoffin: 'const T & operatörü [] (std :: size_t pos) const;' C++ 11'den beri kullanılabilir. –

İlgili konular