Jos*_*eph 2 c++ pointers iterator stl segmentation-fault
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);
}
Run Code Online (Sandbox Code Playgroud)
尝试使用此功能时,第一次插入就可以了.第二次插入将输出"找到[firststring]"然后输出段错误.如果我注释掉if/cout行,我可以重复调用并且不会发生段错误.
我也尝试过做类似的事情std::string tmp=*it;
,然后在那条线上进行段错误.虽然打印不是很大,但我真正要做的是检查lower_bound找到的位置处的字符串是否与尝试插入的字符串相同(即,if(*it==s)
就像上面的那样是segfaulting两个例子).
我在这里错过了什么?
谢谢!