Действителен ли back_insert_iterator на протяжении всего времени существования контейнера?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Действителен ли back_insert_iterator на протяжении всего времени существования контейнера?

Сообщение Anonymous »

Думаю, я знаю ответ на этот вопрос, но был бы признателен за проверку работоспособности.
Применяется ли аннулирование итератора к std::back_insert_iterators?

Код: Выделить всё

#include 
#include 
#include 

int main() {
auto v = std::vector{ 0, 1, 2 };
auto iter = std::back_inserter(v);
*iter++ = 3;
v.clear();    // invalidates iterators, but
*iter++ = 4;  //  back_insert_iterator is special?
assert(v.size() == 1 && v[0] == 4);
return 0;
}
Этот код работает для меня, потому что реализация std::back_insert_iterator от моего поставщика не содержит итератора (или указателя или ссылки). Он просто вызывает метод push_back контейнера.
Но требует ли стандарт такой реализации? Может ли back_insert_iterator другого поставщика содержать и поддерживать итератор «один за концом», который можно использовать при вызове метода вставки контейнера? Кажется, это соответствует требованиям. Разница, конечно, в том, что он может быть признан недействительным.

Я знаю, что cppreference.com не является авторитетным, но он более доступен, чем стандартный. .

[Метод очистки вектора] делает недействительными любые ... итераторы, ссылающиеся на содержащиеся элементы. Все итераторы, проходящие за концом, также считаются недействительными. [cppreference.com, выделено]

std::back_insert_iterator может быть дочерним элементом итератора прошедшего конца.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -container
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Диапазон на основе пары
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как можно привести Iterator к Iterator?
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как можно привести Iterator к Iterator?
    Anonymous » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Спящий режим: объединить последовательные операторы INSERT в многозначный INSERT
    Anonymous » » в форуме JAVA
    0 Ответы
    59 Просмотры
    Последнее сообщение Anonymous
  • Как я могу позволить Hibernate объединить последовательные операторы INSERT в многозначный INSERT
    Anonymous » » в форуме JAVA
    0 Ответы
    65 Просмотры
    Последнее сообщение Anonymous

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