Копирование элементов std::vector
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 02.09.19 09:40
Оценка: -1
Есть некоторая структура 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 г.
Отредактировано 02.09.2019 9:41 RussianFellow . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.