gpt4 book ai didi

c++ - C++像初始化一样将数据分配给数组

转载 作者:行者123 更新时间:2023-12-01 15:13:19 24 4
gpt4 key购买 nike

为什么我们可以用初始化数组

int a[]={1,2,3};

但是我们不能将数据分配给现有数组
a = {2,3,4};



是否可以制作一个将const数组作为参数的函数,并调用它在一行中分配变量?

伪代码:
int a[] = {1,2,3};
myfunc(a, (int){2,3,4});

void myfunc(int &array1, const int array2)
{
copy(array2,array1);
}

最佳答案

是的,您可以编写一个可以推断出数组大小的函数模板

template<size_t N>
void myfunc(int (&a)[N], int const (&b)[N])
{
std::copy(b, b + N, a);
}

请注意,这允许根据需要从大括号初始化列表中推导出第二个参数。另一个优点是您不会弄错尺寸。

现在您可以单行复制
int main()
{
int a[] = {1,2,3};

for (auto i : a)
std::cout << i; // 1 2 3

myfunc(a, {2,3,4});

for (auto i : a)
std::cout << i; // 2 3 4


myfunc(a, {2,3,4,5}); // error, as it should be
}

关于c++ - C++像初始化一样将数据分配给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61068840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com