迭代器变得无效

Iterator becomes nvalid

全部,

std::vector<string>::iterator it;
string orig;
bool found = false;
for( it = vec.begin(); it < vec.end() && !found; it++ )
{
    if( ... )
    {
        found = true;
        orig = (*it);
    }
}

在我退出循环之后,即使我有 found = true.

,迭代器也会变得无效

如何保留迭代器?需要后期处理..

MSVC 2017,Windows8.1

TIA!!!

您可以在找到它的情况下减少 it,以撤消您不想要的最终 it++

if (found) it--;

或者您可以使用 std::find_if,其中 ... 使用 value 而不是 *it

auto it = std::find_if(vec.begin(), vec.end(), [](std::string & value) ( return value.find("abc"); });
auto found = it != vec.end();
auto orig = *it;