По крайней мере, как я понимаю й вопрос, вы просите что-то где (к примеру) я могу иметь входной вектор, как:
[1, 2, 3, 4, 5, 6]
, и я хочу, чтобы заменить шт. 3, 4, 5
с разными данными - скажем [7, 8, 9, 10, 11, 12]
, поэтому после операции результат должен быть: [1, 2, 7, 8, 9, 10, 11, 12, 6]
. В частности, я предполагаю, что старый кусок и новый кусок не обязательно такой же длины.
Предполагая, что это правильно, короткое замыкание: «нет». Как и в, нет, ни std::vector
, ни стандартные алгоритмы напрямую не поддерживают это.
Простой способ сделать это - использовать vector::erase
для удаления исходных данных, а затем использовать vector::insert
для вставки новых данных.
Для (возможно) повышения эффективности, вы начинаете с поиска более короткого из двух (старая часть или новая деталь). Затем вы скопируете эту длину данных из новых данных по старым данным. Затем, если новое было больше старого, вы должны вставить оставшуюся часть новых данных. В противном случае (новое было меньше старого) вы удалили оставшуюся часть старых данных.
Откуда у вас этот 'std :: assign'? –
@JonathanWakely, вероятно, он думает о ['std :: vector :: assign()'] (http://en.cppreference.com/w/cpp/container/vector/assign). –