[英]C++: Why does dereferencing this vector iterator segfault?
void insert_string( std::vector<std::string> & strings, const std::string &s )
{
std::vector<std::string>::iterator it=lower_bound(strings.begin(),strings.end(),s);
if(strings.size()>0) std::cout<<*it<<" is found\n"; // ****
strings.insert(it,s);
}
尝试使用此功能时,第一次插入会很好。 第二个插入将输出“找到[firststring]”,然后输出段错误。 如果我注释掉if / cout行,则可以重复调用并且不会发生段错误。
我也尝试过做类似std::string tmp=*it;
然后将在该行上进行段错误。 虽然打印不是什么大问题,但我真正要做的是检查在Lower_bound找到的位置处的字符串是否与尝试插入的字符串相同(即if(*it==s)
,就像上面的两个示例一样,这是段错误。
我在这里想念什么?
谢谢!
检查条件是否it == strings.end()
,如果不打印则为条件。 这可能会导致问题。 您确定要检查的字符串在字符串向量中吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.