迭代器变得无效
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;
全部,
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;