2012-06-21 16 views
5

¿Tiene valarray alineación de memoria contigua?¿Valarray tiene alineación de memoria contigua?

Quiero pasar un valarray a una función (de IPPS), que solo toma punteros, al pasar &myValarray[0]. Pero, por lo tanto, debería estar seguro de que la alineación de memoria de valarray es contigua.

Gracias!

+2

¿Alguien todavía está usando valarray? – Puppy

+1

@DeadMG ¿Cuál es la alternativa? Desea usar vectores con valores únicos, y su uso debe ser, de ser posible, tan conveniente como en Matlab. Y los valarrays parecen que podrían satisfacer mi necesidad (para el cálculo numérico). – Massoud

+0

@DeadMG Lo uso regularmente. Su interfaz hace que sea fácil escribir algoritmos genéricos que funcionen tanto con escalares como con vectores. Y como es parte del estándar, no tiene que depender de otra biblioteca. –

Respuesta

11

Suponiendo que estás preguntando si la memoria administrada por un valarray se garantiza que sea contigua , entonces la respuesta es sí, por lo menos si el objeto no es const (C++ 03, §26.3.2.3/3 o C++ 11, §26.6.2.4/2):

La expresión & a [i + j] == & a [i] + j evalúa como cierto para todos size_t i y j size_t tales que i + j es menor que la longitud de la matriz no constante a.

+0

Gracias @Jerry Coffin, ¿puedo preguntar por qué el valarray no puede ser constante para cumplir este requisito? – Massoud

+0

@Massoud: si la memoria sirve, no puede usar '&' en un elemento de 'const valarray'. –

+0

@JerryCoffin: 'const T & operator [] (std :: size_t pos) const;' está disponible desde C++ 11. –

Cuestiones relacionadas