it-swarm-pt.tech

Como inicializar uma matriz de struct em C ++?

Eu tenho o seguinte struct no meu código C++ (estou usando o Visual Studio 2010):

struct mydata
{
    string scientist;
    double value;
};

O que eu gostaria de fazer é poder inicializá-los de maneira rápida, semelhante à inicialização de array em C99 ou inicialização de classe em C #, algo à la:

mydata data[] = { { scientist = "Archimedes", value = 2.12 }, 
                  { scientist = "Vitruvius", value = 4.49 } } ;

Se isso não for possível no C++ para uma matriz de estruturas, posso fazer isso para uma matriz de objetos? Em outras palavras, o tipo de dados subjacente para uma matriz não é tão importante, é importante que eu tenha uma matriz, não uma lista, e que possa escrever inicializadores dessa maneira.

30
Alexander Galkin

A sintaxe no C++ é quase exatamente a mesma (apenas deixe de fora os parâmetros nomeados):

mydata data[] = { { "Archimedes", 2.12 }, 
                  { "Vitruvius", 4.49 } } ;

No C++ 03, isso funciona sempre que o tipo de matriz é um agregado . No C++ 11, isso funciona com qualquer objeto que tenha um construtor apropriado.

52
Björn Pollex