Где стандарт C++ объявляет, что пара итераторов, переданных в std::vector::insert
, не должна перекрывать исходную последовательность?
Изменить. Чтобы уточнить, я почти уверен, что стандарт не требует, чтобы стандартная библиотека обрабатывала такие ситуации:
std::vector<int> v(10);
std::vector<int>::iterator first = v.begin() + 5;
std::vector<int>::iterator last = v.begin() + 8;
v.insert(v.begin() + 2, first, last);
Однако мне не удалось найти в стандарте ничего, что запрещало бы диапазоны [first, last)
и [v.begin(), v.end())
пересекаться.