如何在C++中初始化struct数组?

Ale*_*kin 31 c++ arrays struct initialization

我的structC++代码中有以下内容(我使用的是Visual Studio 2010):

struct mydata
{
    string scientist;
    double value;
};
Run Code Online (Sandbox Code Playgroud)

我想这样做是为了能够初始化它们以快速的方式,类似于C99或类初始化数组初始化在C#中,东西一拉:

mydata data[] = { { scientist = "Archimedes", value = 2.12 }, 
                  { scientist = "Vitruvius", value = 4.49 } } ;
Run Code Online (Sandbox Code Playgroud)

如果在C++中对于结构数组不可能这样做,我可以为一个对象数组做吗?换句话说,数组的基础数据类型并不重要,重要的是我有一个数组,而不是一个列表,并且我可以用这种方式编写初始化器.

Bjö*_*lex 53

C++中的语法几乎完全相同(只是省略了命名参数):

mydata data[] = { { "Archimedes", 2.12 }, 
                  { "Vitruvius", 4.49 } } ;
Run Code Online (Sandbox Code Playgroud)

在C++ 03中,只要数组类型是聚合,这就有效.在C++ 11中,这适用于具有适当构造函数的任何对象.

  • 我认为_统一初始化_通常指的是_列表初始化_形式(即没有`=`)?我在标准中找不到统一初始化的参考。 (2认同)