如何声明指向C 11 std :: array的指针?
发布时间:2020-12-16 10:44:09 所属栏目:百科 来源:网络整理
导读:根据变量,我需要选择SeedPositions32或SeedPositions16数组以供进一步使用.我认为一个指针可以允许这个,但我无法播种使它工作.如何声明指向C 11 std :: array的指针?我试过以下. arrayint* ArrayPointer;//arraytypedef T,size_t Size* ArrayPointer;arrayi
根据变量,我需要选择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 = {...} 解决方法
std :: array有一个大小的模板参数.两个不同大小的std :: array模板实例是不同的类型.所以你不能有一个可以指向不同大小的数组的指针(除了void * trickery,它会打开它自己的蠕虫.)
您可以使用模板作为客户端代码,或使用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); 请注意,您还可以获取指向数据的指针: int* ArrayPtr = SeedPositions32.data(); 但在这里,你丢失了尺寸信息.您必须独立跟踪它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |