Попробую такой код:
struct _Struct2
{
void *ptr;
double dval;
};
struct _Struct
{
float fval;
int ival;
std::vector<_Struct2> data;
};
std::vector<_Struct> vec;
int main()
{
vec.resize( 9 );
for ( int i = 0; i < vec.size(); i++ )
{
_Struct &elem = vec[i];
int len = elem.data.size(); // elem.data is [0]()
}
}
The resize(9) должен выделять 9 элементов типа _Struct. И на самом деле это работает. Но каждый элемент типа _Struct не инициализируется, особенно элемент данных, который является еще одним std::vector. Хотелось бы, чтобы он был инициализирован на пустой std::vector. Обязательно делать это вручную? Я думал, что метод resize() вызовет конструктор по умолчанию для каждого элемента _Struct. Thx
Ps.
Имена используемых здесь структур - это только первые вещи, которые приходят мне в голову. Это просто пример. В моей Visual Studio мне сказали, что elem.data в отладочном представлении соответствует [0]()
.
Пс.
Забудьте про [0]()
.