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] is found» и затем segfault. Если я закомментирую строку if / cout, я могу повторно позвонить, и никаких ошибок не произойдет.
Я также попытался сделать что-то вроде std::string tmp=*it;
, которое затем приведет к segfault в этой строке. Хотя печать не так уж и сложна, я действительно пытаюсь проверить, совпадает ли строка в позиции, найденной lower_bound, со строкой, которую пытаются вставить (т. Е. if(*it==s)
, которая просто как два приведенных выше примера).
Что мне здесь не хватает?
Спасибо!