我一直在做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);
}
如果代码是非常规的,则提前道歉。无论如何,我要做的是将对象插入迭代器的位置 - 在迭代器指向的对象(** 1)之前,如果if-return(** 2)返回true。
有什么想法? :(
答案 0 :(得分:2)
插入向量会导致任何现有迭代器失效。下次尝试递增迭代器时,您有未定义的行为。要解决此问题,您可以使用
it = v.insert(it, we);