2012-06-21 23 views
5

valarray是否有連續的內存對齊?valarray是否有連續的內存對齊?

我想通過傳遞&myValarray[0]將valarray傳遞給一個函數(來自IPPS),它只接受指針。但是,我應該確定,valarray的記憶排列是連續的。

謝謝!

+2

有人仍在使用valarray? – Puppy

+1

@DeMmG有什麼選擇?想要只使用保存值的​​向量,如果可能的話,它們的使用應該像在Matlab中一樣方便。 valarrays似乎可以滿足我的需求(用於數值計算)。 – Massoud

+0

@DeadMG我經常使用它。它的接口使編寫能夠同時處理標量和矢量的通用算法變得很容易。因爲它是標準的一部分,所以您不必依賴另一個庫。 –

回答

11

假如你問一個valarray的管理的內存是否是保證連續,那麼答案是肯定的,至少如果對象不是const(C++ 03,§26.3.2.3/ 3或C++ 11,§26.6.2.4/ 2):

表達&一個[I + J] == & A [1] + J的計算結果爲所有的size_t爲真i和爲size_tĴ這樣 即i + j小於非常數數組a的長度。

+0

謝謝@Jerry Coffin,請問爲什麼valarray不能穩定地滿足這個要求? – Massoud

+0

@Massoud:如果內存服務,你根本不能在'const valarray'的元素上使用'&'。 –

+0

@JerryCoffin:'const T&operator [](std :: size_t pos)const;'自C++ 11開始可用。 –