如果数组的大小很小,那么您可以为数组的每个元素显式指定一个初始值设定项。
例如
#include <iostream>
struct A
{
A( int x, int y ) : x( x ), y( y ) {}
int x, y;
};
int main()
{
const size_t N = 10;
A *a = new A[N]
{
{ 0, 0 }, { 1, 1 }, { 2, 2 }, { 3, 3 }, { 4, 4 },
{ 5, 5 }, { 6, 6 }, { 7, 7 }, { 8, 8 }, { 9, 9 }
};
for ( size_t i = 0; i < N; i++ ) std::cout << a[i].x << ' ' << a[i].y << std::endl;
delete [] a;
}
程序输出是
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
但如果您要动态分配数组,那么更好的方法是使用标头<vector> 中声明的标准类std::vector。
您可以使用与示例相同的初始化列表
std::vector<A> v =
{
{ 0, 0 }, { 1, 1 }, { 2, 2 }, { 3, 3 }, { 4, 4 },
{ 5, 5 }, { 6, 6 }, { 7, 7 }, { 8, 8 }, { 9, 9 }
};
或者您可以首先使用默认值初始化所有元素
std::vector<A> v( N, { 0, 0 } );
然后使用例如std::fill、std::generate 等标准算法重新分配它们。