【发布时间】:2011-04-15 05:46:35
【问题描述】:
在 C++ 中,我可以静态初始化一个数组,例如:
int a[] = { 1, 2, 3 };
有没有一种简单的方法可以将动态分配的数组初始化为一组立即值?
int *p = new int[3];
p = { 1, 2, 3 }; // syntax error
...还是我必须手动复制这些值?
【问题讨论】:
-
你反对什么?编写代码初始化向量的必要性?复制需要多少时间?请注意,任何初始化动态分配数组的编译器技巧都将涉及相同的复制,因为无法保证分配的内存带有正确的内容。
-
如果性能至关重要,为什么还要动态分配?为什么要通过指针进行间接寻址?由于您无论如何都在“静态初始化”数组,所以矩阵的维度在编译时肯定是已知的吗?
-
我不反对任何事情,只是问问。我正在使用我自己的矩阵类,它将数据存储在一个动态分配的数组中,我认为如果我可以在不手动复制数据的情况下初始化该数组,那就太好了。 :)
-
@Fred:这只是矩阵的一个测试用例,看看它是否为我提供了某些预定义输入的正确结果。在一般情况下,大小在编译时是未知的。
-
好的,所以您可能正在使用非常大的矩阵?在这种情况下,可能存在比数组或向量更好的数据结构,具体取决于这些矩阵的性质。
标签: c++ arrays initialization c++11