gpt4 book ai didi

添加更多数据后,C++ Vector 迭代器不可取消引用

转载 作者:行者123 更新时间:2023-11-28 01:00:11 24 4
gpt4 key购买 nike

同志们,

以下不起作用:

vector<string>::iterator c;

for( c = holdtype.begin(); c != holdtype.end(); c++)
{
if( *c == "preposition" )
{
c++;
if( *c == "unknown" )
{
c++;
if( *c == "unknown" )
{
c++;
if( *c == "unknown" )
{
cout <<endl <<"This should be a verb " << *c;
}
}
}
}
}

奇怪的是它适用于一定数量的数据。一旦超过大约 30 个字,它就会停止工作并给我“不可取消引用的错误”。

我已经试过了,结果是一样的:

vector<string>::iterator c;
c = holdtype.begin();

while( c != holdtype.end())
{
if( *c == "preposition" )
{
if( c != holdtype.end() ) { c++; } else { break; }
if( *c == "unknown" )
{
if( c != holdtype.end() ) { c++; } else { break; }
if( *c == "unknown" )
{
if( c != holdtype.end() ) { c++; } else { break; }
if( *c == "unknown" )
{
cout <<endl <<"This should be a verb " << *c;
}
}
}
}
if( c == holdtype.end() ) { break; } else {c++;}
}

几天来我一直在努力解决这个问题,我是初学者。

最佳答案

您的第二个版本几乎是正确的,但是您需要在递增之后和取消引用之前检查 c 是否有效:

vector<string>::iterator c;
c = holdtype.begin();

while( c != holdtype.end())
{
if( *c == "preposition" )
{
++c;
if( c == holdtype.end() ) { break; }
if( *c == "unknown" )
{
++c;
if( c == holdtype.end() ) { break; }
if( *c == "unknown" )
{
++c;
if( c == holdtype.end() ) { break; }
if( *c == "unknown" )
{
cout <<endl <<"This should be a verb " << *c;
}
}
}
}
++c;
}

关于添加更多数据后,C++ Vector 迭代器不可取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9146973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com