为什么我会遇到段错误(C ++ 98)?

时间:2015-09-20 22:57:57

标签: c++ iterator segmentation-fault

我一直在做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。

有什么想法? :(

1 个答案:

答案 0 :(得分:2)

插入向量会导致任何现有迭代器失效。下次尝试递增迭代器时,您有未定义的行为。要解决此问题,您可以使用

it = v.insert(it, we);