Имеет ли valarray непрерывное выравнивание памяти?

Имеет ли valarray непрерывное выравнивание памяти?

Я хочу передать valarray функции (из IPPS), которая принимает только указатели, передав &myValarray[0]. Но поэтому я должен быть уверен, что выравнивание памяти valarray является непрерывным.

Спасибо!


person Massoud    schedule 21.06.2012    source источник
comment
Кто-то все еще использует valarray?   -  person Puppy    schedule 21.06.2012
comment
@DeadMG Какая альтернатива? Хотите использовать векторы, содержащие только значения, и их использование должно быть, по возможности, таким же удобным, как в Matlab. И кажется, что valarrays могут удовлетворить мою потребность (для числового расчета).   -  person Massoud    schedule 22.06.2012
comment
@DeadMG Я использую его регулярно. Его интерфейс упрощает написание общих алгоритмов, которые работают как со скалярами, так и с векторами. И поскольку это часть стандарта, вам не нужно полагаться на еще одну библиотеку.   -  person Bowie Owens    schedule 04.07.2012
comment
@DeadMG, что вы используете вместо valarray?   -  person becko    schedule 06.03.2014


Ответы (1)


Предполагая, что вы спрашиваете, гарантированно ли память, управляемая valarray, будет непрерывной, тогда ответ — да, по крайней мере, если объект не const (C++03, §26.3.2.3 /3 или С++ 11, §26.6.2.4/2):

Выражение &a[i+j] == &a[i] + j оценивается как истинное для всех size_t i и size_t j, таких что i+j меньше длины непостоянного массива a.

person Jerry Coffin    schedule 21.06.2012
comment
Спасибо @Jerry Coffin, могу я спросить, почему valarray не может быть постоянным для выполнения этого требования? - person Massoud; 22.06.2012
comment
@Massoud: если память не изменяет, вы вообще не можете использовать & для элемента const valarray. - person Jerry Coffin; 22.06.2012
comment
@JerryCoffin: const T& operator[]( std::size_t pos ) const; доступен с C++11. - person Cheers and hth. - Alf; 28.02.2018