gcc中 std::list 的坑

std::list
std::advance

使用时的坑:

std::list<int> listObj {1, 2, 3, 4, 5};
auto itEnd = listObj.end();
itEnd++;
assert(itEnd == listObj.begin());  // Ok
assert(itEnd == listObj.end());    // crash

上面代码中,itEnd在被赋予listObj.end()后仍然可以自增,移动为listObj.begin(),因此std::advance的距离参数若大于listObj.size(),则advance会从头开始再次移动,而不是抛出异常或固定为listObj.end()

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

推荐阅读更多精彩内容

  • C++11之前,对代码有点追求的程序员,如果事先知道vector的大小,会预先reserve出确定的空间,代码如下...
    廖少少阅读 5,578评论 0 2
  • 阅读须知: C++语言实现了自定义模板,大家可以自己封装模板. 同样,C++的大牛们已经自己封装了模板库,类似于系...
    埃斯丶阅读 695评论 1 3
  • 1. 无序容器 https://stackoverflow.com/questions/15869066/inse...
    朔方烟尘阅读 417评论 0 0
  • 1.源代码分布 标准库STL的文件位置,与所采用的编译器有关: (1)Visual C++:...\include...
    卡尔曼阅读 300评论 0 0
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,122评论 0 4