为什么我们可以用初始化数组
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/