• Почему возникает ошибка с итератором?

    @sborisov
    У вас проблема в этой строке:
    if ((it++) != words.end())
    замените её на эту:
    if ((++it) != words.end())
    А лучше перепишите с циклом while (я привёл код), а ещё лучше используйте for range цикл.

    Объяснение:
    вы сначала сравнивате временный объект, который вернул (it++) c end(), при этом сам итератор it уже сдвинут оператором ++, и смотрит на end(), который вы пытаетесь разыменовать, что запрещено.
    Посмотрите здесь, что возвращают операторы ++ и -- при пост и пре инкрементах.
    en.cppreference.com/w/cpp/concept/ForwardIterator
    en.cppreference.com/w/cpp/concept/BidirectionalIterator

    auto it = words.begin();
      while(it != words.end()){	
        if (*it == "word2")
        {
          Pos = 2;
          //do something
        }
       ++it;	
       }
    Ответ написан
    Комментировать