被一网友问到过个这个问题,看了下源码,差不多应该明白了

例子:

int a[] = {1,3,5,7,9};
std::for_each(std::begin<int>(a), std::end<int>(a), [&](int n) {cout << n;});
//这样会把13579输出来。

1,先看一下begin和end这源码

template<class _Tp>constexpr const _Tp*begin(initializer_list<_Tp> __ils) noexcept{ return __ils.begin(); }/***  @brief  Return an iterator pointing to one past the last element*          of the initializer_list.*  @param  __ils  Initializer list.*/template<class _Tp>constexpr const _Tp*end(initializer_list<_Tp> __ils) noexcept{ return __ils.end(); }

2.嘿!原来是调用了一个initializer_list这个类模版的begin和end方法,我们可以继续查看

 // The compiler can call a private constructor.这个编译器主动调用的构造函数,开发者调用不了constexpr initializer_list(const_iterator __a, size_type __l): _M_array(__a), _M_len(__l) { }//size()方法直接返回_M_len,也就是编译器确定的长度constexpr size_typesize() const noexcept { return _M_len; }//begin()方法直接返回_M_array,首地址了constexpr const_iteratorbegin() const noexcept { return _M_array; }//end()方法返回的时首地址加上数组长度,即尾端constexpr const_iteratorend() const noexcept { return begin() + size(); }

这下应该明白了,是编译器的锅。

更多文章:http://blog.csdn.net/what951006?viewmode=list
powered by:小乌龟在大乌龟背上~

C++之begin()和end()分析(C艹11)相关推荐

  1. [译] APT分析报告:11.深入了解Zebrocy的Dropper文档(APT28)

    这是作者新开的一个专栏,主要翻译国外知名安全厂商的APT报告,了解它们的安全技术,学习它们溯源APT组织和恶意代码分析的方法,希望对您有所帮助.当然,由于作者英语有限,会借助机翻进行校验,还请包涵! ...

  2. QIIME 2用户文档. 7差异丰度分析gneiss(2018.11)

    文章目录 前情提要 QIIME 2用户文档. 7差异丰度分析gneiss 创建`balances` 选项1:相关性聚类 选项2:梯度聚类 用平衡建立线性模型 Reference 译者简介 猜你喜欢 写 ...

  3. QIIME 2教程. 08差异丰度分析gneiss(2020.11)

    文章目录 QIIME 2用户文档. 8差异丰度分析gneiss 创建`balances` 方法1:相关性聚类 选项2:梯度聚类 Reference 译者简介 猜你喜欢 写在后面 QIIME 2用户文档 ...

  4. Java源码详解六:ConcurrentHashMap源码分析--openjdk java 11源码

    文章目录 注释 类的继承与实现 数据的存储 构造函数 哈希 put get 扩容 本系列是Java详解,专栏地址:Java源码分析 ConcurrentHashMap 官方文档:ConcurrentH ...

  5. Java源码详解四:String源码分析--openjdk java 11源码

    文章目录 注释 类的继承 数据的存储 构造函数 charAt函数 equals函数 hashCode函数 indexOf函数 intern函数 本系列是Java详解,专栏地址:Java源码分析 Str ...

  6. Java源码详解五:ArrayList源码分析--openjdk java 11源码

    文章目录 注释 类的继承与实现 构造函数 add操作 扩容函数 remove函数 subList函数 总结 本系列是Java详解,专栏地址:Java源码分析 ArrayList 官方文档:ArrayL ...

  7. Java源码详解三:Hashtable源码分析--openjdk java 11源码

    文章目录 注释 哈希算法与映射 线程安全的实现方法 put 操作 get操作 本系列是Java详解,专栏地址:Java源码分析 Hashtable官方文档:Hashtable (Java Platfo ...

  8. Java源码详解二:HashMap源码分析--openjdk java 11源码

    文章目录 HashMap.java介绍 1.HashMap的get和put操作平均时间复杂度和最坏时间复杂度 2.为什么链表长度超过8才转换为红黑树 3.红黑树中的节点如何排序 本系列是Java详解, ...

  9. python行业中性_用Python分析指数: 11月16日热门指数Z值表

    衡量市场,指数高低是一个难题! 价值投资者很难知道,现在是高估,还是低估? 买的是便宜还是,贵了? 应该现在买/卖,还是再等等? 针对这个问题,我在网上看到了一些量化的处理方法.例如:平均数法,中位数 ...

最新文章

  1. 【c语言】蓝桥杯算法提高 P0402
  2. Clonezilla制作镜像时报错:extfsclone.c:bitmap free count err解决办法
  3. AI:《A Simple Tool to Start Making Decisions with the Help of AI—借助人工智能开始决策的简单工具》翻译与解读
  4. UnderScore的使用实例记录
  5. MySQL案例分析--QueryCache
  6. 重拾阅读--朝花夕拾啊
  7. 下列选项中不是具体的python序列类型的是_以下选项中,不是具体的Python序列类型的是...
  8. 手机也能实时查看开关门状态?Zigbee 智慧厕所门亮了
  9. 【PTA-python】第5章-1 输出星期名缩写 (70 分)
  10. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK .
  11. GBF ASIA亚太电池展
  12. python import illegal instruction
  13. AndroidStudio上传自己的项目到Bintray jCenter远程仓库(解决400错误)
  14. 面向对象程序设计c++版董正言张聪课本课后习题答案第五章
  15. 服装内部条码和服装国标码的区别
  16. 食品品牌如何做好消费需求洞察直抵消费者心智
  17. android原生输入法皮肤,duang_精选布局_触屏皮肤_皮肤布局_百度手机输入法
  18. Coursera | Introduction to Data Analytics(IBM) | Quiz答案
  19. 离开nbsp;果真如此轻易?
  20. Linux基础常见指令讲解(小白入门必看)

热门文章

  1. HDFS读写流程(重点,有些面试官总喜欢问到,记录一下)
  2. Linux常用必备命令
  3. solidworks异型孔向导找不到标准数据库swbrowser解决方法
  4. Construct2 第一次制作的小游戏
  5. 开篇之作之——阅读与思考
  6. SpringBoot 必知必会的19个常用注解
  7. 关于卷积神经网络的论文,卷积神经网络创始人
  8. 50hz 60hz 级联 陷波器_自适应陷波器级联神经网络抗干扰算法
  9. 一个网卡如何设置两个ip,(如何加装网卡,两网卡或多网卡)
  10. 【electron】打开离线包-双击文件打开关联应用