Есть некоторая структура MyStruct, например такая:
typedef struct
{
long double field1;
long double field2;
//...
long double fieldN;
} My_Struct;
И есть вектор (std::vector) vect1, содержащий элементы типа My_Struct.
Я хочу создать другой вектор vect2, содержащий элементы типа My_Struct, который я заполняю элементами из первого вектора по своему определённому правилу--например, 0-ой элемент вектора vect1 я ставлю в 10-ую позицию вектора vect2, 1-ый элемент вектора vect1 я ставлю в 5-ую позицию вектора vect2, 2-ой элемент вектора vect1 я ставлю в 8-ую позицию вектора vect2.
Соответствующий код:
vector<My_Struct> vect1, vect2;
// заполнение вектора vect1 элементами с инициализацией полей у каждого элемента;
n = vect1.size();
vect2.reserve(n);
vect2.resize(n);
vect2[10] = vect1[0];
vect2[5] = vect1[1];
vect2[8] = vect1[2];
Вопрос состоит в следующем--для выделения памяти для второго вектора vect2 достаточно ли пользоваться функцией reserve или же надо вместо этого сделать цикл от 0 до n, в котором вызывалась бы функция push_back, параметром которой была бы переменная структурного типа My_Struct? Как правильно выделить память для второго вектора vect2 ?
1613 г. = 2024 г.