在C ++ 11 std::array中,连续存储和性能的定义不比数组差,但是我无法确定标准的各种要求是否暗示std :: array具有与普通数组相同的大小和内存布局数组。那是您可以依靠的sizeof(std::array<int,N>) == sizeof(int)*N还是该实现特定的?
特别是,这是否可以保证按照您期望的方式工作:
std::vector< std::array<int, N> > x(M);
typedef (*ArrayPointer)[N];
ArrayPointer y = (ArrayPointer) &x[0][0];
// use y like normal multidimensional array
它可以在我尝试过的两个编译器(GNU和Intel)中工作。此外,我可以找到的所有第三方文档(像这样)都指出std :: array与普通数组一样具有高效的内存,再加上连续的要求,则意味着它必须具有相同的内存布局。但是我在标准中找不到此要求。
泛舟湖上清波郎朗
人到中年有点甜
相关分类