加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何声明指向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();

但在这里,你丢失了尺寸信息.您必须独立跟踪它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读