当前位置:   article > 正文

c++中range-based for 的性能分析_c++ for range 性能

c++ for range 性能

这要是对以下几种在c++里的 for-range-loop做一个总结

  1. for(auto e : container)
  2. for(auto &e : container)
  3. for(const auto &e : container)
  4. for(auto && e : container)

这里主要是参考 ref [1] stackoverflow里的类容,他总结的很好,我这里做个备份

核心思想是

和函数的参数一样,Same consideration applies as for function arguments

简单解释

  1. for(auto e : container)
    这会使用一个 copy-constructor函数,构造一个副本,也就是说 e,仅仅是container中的一个copy
    test-code 见ref1
  2. for(const auto & e:container),for(auto &e : container)
    这两者的区别在于 const 不能在for-loop中更改 e,两者的开销(通常意义下,取决于copy-construct的开销)都会比 1低,
  3. for(auto &&e : container)
    这个语法我也是第一次遇见,主要给一些proxy-iterator使用的,
    例如 vector<bool>STL将其设计为一个bool一个bit 所以是没法refrence到它的地址的(cpu按byte寻址),如
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号