Сборка кода на C ++ заняла очень много времени - PullRequest
1 голос
/ 05 апреля 2019

У меня очень длинный список инициализаторов, что-то вроде этого.

 std::vector<Inventory> inventory_list = {Inventory(0,30.0),
    Inventory(1,30.0),
    Inventory(2,30.0),
    Inventory(3,30.0),
    Inventory(4,30.0),
    Inventory(5,30.0),
    Inventory(29,30.0),
    Inventory(30,30.0),}

 ..... 

, содержащее около 72000 строк такого списка инициализаторов, и оно уже заняло более получаса и все еще компилируется.Есть ли способ сделать это быстрее?Или это то, что ожидается для такого большого количества данных?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Альтернативный способ осуществления,

Inventory I[] = { {1,30.0},{2,30.0},{3,30.0},{4,30.0 },{5,30.0},{29,30.0 },{30,30.0}};

std::vector<Inventory> inventory_list (I,I+(sizeof(I)/sizeof(Inventory)));
0 голосов
/ 05 апреля 2019

Рассмотрим это как обходной путь:

struct InitData
{
    int i;
    double v;
};

InitData init[] = { {1,30.0}, {2,30.0}, {3,30.0}, {4,30.0}, {5,30.0}, ...};

std::vector<Inventory> inventory_list;
size_t count = sizeof(init) / sizeof(init[0]);
for (size_t i = 0; i < count; i++)
{
     inventory_list.push_back(Inventory(init[i].i, init[i].v);
}
...