我一直在做 C++ 作业(我是新手)。我应该按字母顺序将具有字符串成员的实例化结构添加到列表中(不允许使用排序机制)。
虽然我已经弄清楚了大部分功能,但我仍然坚持这一点:
void insertWord(vector<word_entry>& v, word_entry& we){
for(vector<word_entry>::iterator it = v.begin(); it != v.end();++it){
int determine = it->word.compare(we.word); //**1
if(determine > 0){ //**2
v.insert(it, we);
}
}
v.push_back(we);
}
如果代码写得不合常规,请提前致歉。无论如何,我想要做的是将对象插入迭代器的位置 - 如果 if-return (**2) 返回 true,则在迭代器指向的对象 (**1) 之前。
有什么想法吗? :(
最佳答案
插入 vector 会导致任何现有的迭代器失效。下次您尝试递增迭代器时,您会遇到未定义的行为。要解决此问题,您可以使用
it = v.insert(it, we);
关于c++ - 为什么会出现段错误 (C++ 98)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32685172/