Где стандарт 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())
.