Доступ к вектору структур внутри вектора структур

Нужно получить доступ к вектору структур, которые вложены в другой вектор структур. Размеры обоих заранее известны и не будут изменяться, только данные внутри. Не привожу полностью структуры, чтобы не смущать головы лишними данными. Я представляю себе этот процесс так, но внутренний вектор не инициализируется.

     //Header

    struct secondStruct
    { 
    // <немного других переменных тут>
    std::string secondText;
    }
    
    struct firstStruct
    {
    // <немного других переменных тут>
    std::string firstText;
    std::vector <secondStruct> SecondStruct;
    }

cpp:

//main.cpp
#include Header.h;

std::vector <firstStruct> FirstSTruct(10); // инициализируем верхний вектор, задаем конкретный размер.
std::vector <secondStruct> SecondStruct(5); // инициализируем внутренний вектор (??)

int main()
{

FirstSTruct[0].SecondStruct[0].secondText = "Some Text Here"; // ошибка доступа к вектору (выход за границы вектора)
}

чтяднт собственно? По факту получается, что SecondStruct инициализируется как отдельный объект (к нему есть доступ):

SecondStruct[0].secondText = "Some Text Here"; // так все работает

Но как его инициализировать внутри FirstStruct ?


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

Автор решения: Harry
std::vector <secondStruct> SecondStruct(5); // инициализируем внутренний вектор (??)

Отнюдь. Это - глобальный вектор SecondStruct, и с внутренним он не имеет ничего общего, кроме типа и имени :)

struct firstStruct
{
// <немного других переменных тут>
std::string firstText;
std::vector <secondStruct> SecondStruct;
}

Чтобы инициализировать так, как вы хотите, надо дописать, например, так:

struct firstStruct
{
firstStruct():SecondStruct(5){}
// <немного других переменных тут>
std::string firstText;
std::vector <secondStruct> SecondStruct;
}

Ваш "работающий" код

SecondStruct[0].secondText = "Some Text Here"; // так все работает

работает, но только обращается к тому глобальному вектору SecondStruct, а не к SecondStruct внутри структуры.

→ Ссылка