Как скопировать один вектор в другой, если у них разные типы? С++
Предположим, есть вектор:
std::vector<MyType1> vec1;
При условии, что MyType2 может быть построен из MyType1, как мне инициализировать второй вектор? Пробовал сделать так:
std::vector<MyType2> vec2 {vec1};
Ответы (3 шт):
Автор решения: KoVadim
→ Ссылка
assign работает хорошо, если есть подходящее преобразование, которым компилятор может воспользоваться. Если же у него это не получается, то можно сделать вот так
std::vector<int> a {1,2,3,4};
std::vector<std::string> b;
std::transform(
a.begin(), a.end(), // исходный вектор
std::back_inserter(b), // результирующий вектор
[](auto q) { return std::to_string(q) + "\n";} // функция преобразования
);
я использовал back_inserter, который в данном случае просто скрывает push_back, но можно выделить память под результирующий вектор (через b.resize(a.size()); ) и потом можно просто указать b.begin()