vector iterators incompatible断言问题

今天运行debug版的程序跑了一会就出了vector iterators incompatible这个断言,进断点一看,停在一个vectro容器的insert调用上。
仔细看了这部分的使用代码,很正常,一时半会没找出什么问题。
一开始怀疑使用vector之前做了erase的操作有误,但是确认了iterator已经重新赋值了,没有使用无效的迭代器,这就奇怪了。
出问题的代码类似下面的样子:

vectorA.insert(vectorA.end(), reply->vectorB().begin(), reply->vectorB().end());

stackoverflow上看了看,有人提到这个一般是因为对两个不同容器的iterator做比较等操作导致,但是上面的代码乍看下不会有这个问题啊。
下意识跳转到vectroB函数的定义一看,恍然大悟,原来vectorB()返回的是vector而非vector的引用,所以上面的reply->vectorB()每次调用都生成了一个vector,自然begin和end不是同个vector,从而导致断言了。
这个问题写代码有些大意造成的,所有其他的对vector的返回基本都使用引用,就那个地方漏写了,所以潜意识里,reply->vectorB()返回的肯定是个引用,自然被这个问题的解决给扰乱了一下。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,874评论 18 399
  • 这是我人生中第一次跳舞,第一次这么认真的参与到舞蹈的排练当中。由于单位的需要的,任务的特殊性。我被选为舞蹈的...
    一访文阅读 446评论 0 6
  • 美国学者麦奎尔提出:“我们是通过大众传媒来了解我们所处符号环境(信息、观念、 信仰等)的特征的,同时,媒介使其各不...
    刘二傻阅读 1,705评论 0 2
  • 教你炒股票40:同级别分解的多重赋格 (2007-03-27 12:53:22) 转载▼ 分类:时政经济(缠中说禅...
    4ccb34d29844阅读 241评论 0 0