2016-01-27 47 views
2

在C++中,是否可以直接从另一个初始化内置数组?据我所知,只能有一个数组,然后从另一个数组复制/移动每个元素到它,这是某种分配,而不是初始化。在C++中,是否可以直接从另一个数组初始化数组?

+1

你读过http://stackoverflow.com/questions/20519992/array-declaration-and-initialization-in-c11? – VolAnd

+3

您是否关心内置数组la'int n [5]'和/或'std :: array <>'s? –

+0

@TonyD我的意思是内置阵列。 – Lingxi

回答

2

数组既没有复制构造函数也没有复制赋值运算符。您只能按元素将元素从一个数组复制到另一个元素。

字符数组可以通过字符串文字初始化。或者可以使用标准C函数来复制字符串,如标头<cstring>中声明的strcpy,strncpymemcpy

有关可以用于std::copystd::copy_ifstd::transform在头<algorithm>声明例如标准算法其他阵列。

否则,您可以使用标准容器std::arraystd::vector,它们允许将一个类型的对象分配给另一个相同类型的对象或从另一个对象创建一个对象。

+0

那么,答案基本上没有? – Lingxi

+2

@Lingxi对于内置数组,答案是否定的,唯一的方法是将一个数组放入一个结构体中(这种方式设计为std :: array),并从另一个同类型的对象中创建一个结构体对象包含一些应该被复制的数组。 –

4

这是的C++ 11的新功能之一。

std::array <int, 5> a = {1, 2, 3, 4, 5}; 
std::array <int ,5> b = a; 

后者复制阵列ab