Путаница в отношении недействительных итераторовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Путаница в отношении недействительных итераторов

Сообщение Anonymous »

Если векторы хранятся смежно, если они не становятся меньше или перераспределены, любой итератор, указывающий на элемент внутри него, должен быть действительным. Будет определено следующий код: < /p>
#include
#include

int main()
{
std::vector v = {1, 2, 3, 4, 5, 6, 7, 8, 9};
auto i = v.begin() + 7;
v.insert(v.begin() + 5, 10);
if(v.capacity() > v.size()) {
std::cout

Все итераторы, которые указывают на элемент перед точкой вставки, не затронуты, но все остальные недействительны. Я спрашиваю, потому что я не вижу, как код потерпит неудачу.

Подробнее здесь: https://stackoverflow.com/questions/797 ... -iterators
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»