whi*_*ell 4 c++ pointers c++11 stdarray
根据变量,我需要选择SeedPositions32或SeedPositions16数组以供进一步使用.我认为一个指针可以允许这个,但我无法播种使它工作.如何声明指向C++ 11 std :: array的指针?我试过以下.
array<int>* ArrayPointer;
//array<typedef T, size_t Size>* ArrayPointer;
array<int,32> SeedPositions32 = {0,127,95,32,64,96,31,63,16,112,79,48,15,111,80,
47,41,72,8,119,23,104,55,87,71,39,24,7,56,88,103,120};
array<int,16> SeedPositions16 = {...}
Run Code Online (Sandbox Code Playgroud)
jua*_*nza 15
std::array
有一个大小的模板参数.std::array
具有不同大小的两个模板实例是不同类型.所以你不能有一个可以指向不同大小的数组的指针(禁止void*
欺骗,这会打开它自己的蠕虫.)
您可以使用模板作为客户端代码,也可以使用std::vector<int>
.
例如:
template <std::size_t N>
void do_stuff_with_array(std::array<int, N> the_array)
{
// do stuff with the_array.
}
do_stuff_with_array(SeedPositions32);
do_stuff_with_array(SeedPositions16);
Run Code Online (Sandbox Code Playgroud)
请注意,您还可以获取指向数据的指针:
int* ArrayPtr = SeedPositions32.data();
Run Code Online (Sandbox Code Playgroud)
但在这里,你丢失了尺寸信息.您必须独立跟踪它.