首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Iterator无效

Iterator无效
EN

Stack Overflow用户
提问于 2022-03-28 13:52:33
回答 1查看 64关注 0票数 0

全,

代码语言:javascript
复制
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,Windows 8.1

蒂娅!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-28 14:00:44

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

代码语言:javascript
复制
if (found) it--;

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

代码语言:javascript
复制
auto it = std::find_if(vec.begin(), vec.end(), [](std::string & value) ( return value.find("abc"); });
auto found = it != vec.end();
auto orig = *it;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71648632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档