Який хороший чистий спосіб перетворити 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(...)функцію? Не могли б ви додати це до відповіді?