Как инициализировать структуру в векторе на C++?

Как объявить структуру в структуре, при этом используя вектор?

Делаю так, но не получается

struct a {
    std::vector<struct b { int number; };> b;
    // ...
};

Ответы (3 шт):

Автор решения: V-Mor

А зачем Вам ОБЪЯВЛЯТЬ структуру прямо в векторе? Объявить её нужно заранее, ДО объявления этой структуры, и потом уже использовать её как обычный тип:

struct B // Переименовал, потому что имя структуры и имя переменной не могут совпадать
{
    int number; 
};

struct a 
{
    std::vector<B> b;
};
→ Ссылка
Автор решения: magrif

Определяем структуру a с объявленной структурой b в шаблонном параметре шаблона вектора:

struct a
{
    std::vector<struct b> vec;
};

Далее определяем структуру b

struct b
{
    int i;
    double d;
};

И используем

a aaa;
b bbb{100, 500.0};
aaa.vec.insert(std::begin(aaa.vec), bbb);
→ Ссылка
Автор решения: dIm0n

Нельзя определить структуру на месте шаблонного аргумента, но можно на месте типа массива:

#include <iostream>

struct a {
    struct b {
        int number = 42;
    } vec[42];
};

int main() {
    std::cout << a{}.vec[7].number << '\n';
}
→ Ссылка