Вот функция, которая предназначена для:
a) принять вектор int
b) для каждого int во входном векторе добавьте инверсию этого int
предпосылки: none
постусловия: возвращаемый векторный размер() - это быстрая 2 * размер входного вектора.
Обратите внимание, что вектор изменен на месте.
Вопрос:
Является ли эта функция строго определенным поведением vis-a-vis аннулирование итератора во время преобразования?
Бонус:
Есть ли лучший/более сжатый/надежный способ его написать?
код:
std::vector<int> append_negatives(std::vector<int> v)
{
v.reserve(v.size() * 2);
std::transform(begin(v), end(v),
back_inserter(v),
[](auto&& x) { return -x; });
return v;
}