У вас проблема в этой строке:
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/BidirectionalIteratorauto it = words.begin();
while(it != words.end()){
if (*it == "word2")
{
Pos = 2;
//do something
}
++it;
}