码迷,mamicode.com
首页 > 编程语言 > 详细

关于c++primer的一个代码错误

时间:2014-06-07 13:04:13      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:c++   容器   c++primer   

最近看c++primer第四版的标准容器vector,讲到对vector容器的插入删除元素会使得end()的迭代器失效的问题,所以不建议程序员对end()的存储。

vector<int> vec;
vector<int>::iterator first=vec.begin();
while(first!=vec.end())
{
     first=vec.insert(first,12);
     first++;
}
上面的这段代码来自c++primer书中,但是如果我们去运行这样的程序是不能结束的,会无限循环;

这时我们如果仔细的阅读上面的这段代码的话会发现这段代码的确是无限循环的,因为insert函数返回的新插入元素的迭代器,这样的话是永远不可能等于end()的。

修改方法:

将first++改为first+=2;
这样再运行这样的程序就可以执行了。


关于c++primer的一个代码错误,布布扣,bubuko.com

关于c++primer的一个代码错误

标签:c++   容器   c++primer   

原文地址:http://blog.csdn.net/daida2008/article/details/29010579

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!