эта итераторная операция не определена в c ++ - PullRequest
0 голосов
/ 18 апреля 2019
it++ = nodes.insert(it, new_node);

где узлы - это std :: vector, а "it" - это тип итератора.

У меня другое поведение на gcc-7.3.0 и gcc-5.4.0. Просто интересно, является ли это неопределенным поведением?

На gcc-7.3.0 это то же самое, что и

it = nodes.insert(it, new_node);
it++

На gcc-5.4.0 он такой же, как:

it = nodes.insert(it, new_node);
it = std::advance(it,2);

1 Ответ

1 голос
/ 18 апреля 2019

Если предположить, что it является действительным итератором в nodes, то это кажется правильным.Подробнее см. https://en.cppreference.com/w/cpp/container/vector/insert.

Если it является , а не допустимым итератором, то это неопределенное поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...