Який хороший чистий спосіб перетворити std::vector<int> intVec
на std::vector<double> doubleVec
. Або, загальніше, перетворити два вектори конвертованих типів?
Який хороший чистий спосіб перетворити std::vector<int> intVec
на std::vector<double> doubleVec
. Або, загальніше, перетворити два вектори конвертованих типів?
Відповіді:
Використовуйте std::vector
конструктор діапазонів:
std::vector<int> intVec;
std::vector<double> doubleVec(intVec.begin(), intVec.end());
copy(v_int.begin(), v_int.end(), back_inserter(v_float));
абоv_float.resize(v_int.size()); copy(v_int.begin(), v_int.end(), v_float.begin());
std::distance()
"Якщо це ітератор з довільним доступом, функція використовує оператор - для обчислення цього. В іншому випадку функція використовує оператор збільшення (operator ++) неодноразово." Тож у цьому випадку кількість елементів можна знайти, віднявши ітератори. Інше питання, чи реалізована стандартна бібліотека для використання std :: distance для початкового резерву (), але godbolt.org/z/6mcUFh принаймні містить виклик std :: distance ().
std::copy(...)
функцію? Не могли б ви додати це до відповіді?