Как инициализировать структуру в векторе на 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';
}