Доступ к вектору структур внутри вектора структур
Нужно получить доступ к вектору структур, которые вложены в другой вектор структур. Размеры обоих заранее известны и не будут изменяться, только данные внутри. Не привожу полностью структуры, чтобы не смущать головы лишними данными. Я представляю себе этот процесс так, но внутренний вектор не инициализируется.
//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 шт):
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 внутри структуры.