C++之begin()和end()分析(C艹11)
被一网友问到过个这个问题,看了下源码,差不多应该明白了
例子:
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)相关推荐
- [译] APT分析报告:11.深入了解Zebrocy的Dropper文档(APT28)
这是作者新开的一个专栏,主要翻译国外知名安全厂商的APT报告,了解它们的安全技术,学习它们溯源APT组织和恶意代码分析的方法,希望对您有所帮助.当然,由于作者英语有限,会借助机翻进行校验,还请包涵! ...
- QIIME 2用户文档. 7差异丰度分析gneiss(2018.11)
文章目录 前情提要 QIIME 2用户文档. 7差异丰度分析gneiss 创建`balances` 选项1:相关性聚类 选项2:梯度聚类 用平衡建立线性模型 Reference 译者简介 猜你喜欢 写 ...
- QIIME 2教程. 08差异丰度分析gneiss(2020.11)
文章目录 QIIME 2用户文档. 8差异丰度分析gneiss 创建`balances` 方法1:相关性聚类 选项2:梯度聚类 Reference 译者简介 猜你喜欢 写在后面 QIIME 2用户文档 ...
- Java源码详解六:ConcurrentHashMap源码分析--openjdk java 11源码
文章目录 注释 类的继承与实现 数据的存储 构造函数 哈希 put get 扩容 本系列是Java详解,专栏地址:Java源码分析 ConcurrentHashMap 官方文档:ConcurrentH ...
- Java源码详解四:String源码分析--openjdk java 11源码
文章目录 注释 类的继承 数据的存储 构造函数 charAt函数 equals函数 hashCode函数 indexOf函数 intern函数 本系列是Java详解,专栏地址:Java源码分析 Str ...
- Java源码详解五:ArrayList源码分析--openjdk java 11源码
文章目录 注释 类的继承与实现 构造函数 add操作 扩容函数 remove函数 subList函数 总结 本系列是Java详解,专栏地址:Java源码分析 ArrayList 官方文档:ArrayL ...
- Java源码详解三:Hashtable源码分析--openjdk java 11源码
文章目录 注释 哈希算法与映射 线程安全的实现方法 put 操作 get操作 本系列是Java详解,专栏地址:Java源码分析 Hashtable官方文档:Hashtable (Java Platfo ...
- Java源码详解二:HashMap源码分析--openjdk java 11源码
文章目录 HashMap.java介绍 1.HashMap的get和put操作平均时间复杂度和最坏时间复杂度 2.为什么链表长度超过8才转换为红黑树 3.红黑树中的节点如何排序 本系列是Java详解, ...
- python行业中性_用Python分析指数: 11月16日热门指数Z值表
衡量市场,指数高低是一个难题! 价值投资者很难知道,现在是高估,还是低估? 买的是便宜还是,贵了? 应该现在买/卖,还是再等等? 针对这个问题,我在网上看到了一些量化的处理方法.例如:平均数法,中位数 ...
最新文章
- 【c语言】蓝桥杯算法提高 P0402
- Clonezilla制作镜像时报错:extfsclone.c:bitmap free count err解决办法
- AI:《A Simple Tool to Start Making Decisions with the Help of AI—借助人工智能开始决策的简单工具》翻译与解读
- UnderScore的使用实例记录
- MySQL案例分析--QueryCache
- 重拾阅读--朝花夕拾啊
- 下列选项中不是具体的python序列类型的是_以下选项中,不是具体的Python序列类型的是...
- 手机也能实时查看开关门状态?Zigbee 智慧厕所门亮了
- 【PTA-python】第5章-1 输出星期名缩写 (70 分)
- No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK .
- GBF ASIA亚太电池展
- python import illegal instruction
- AndroidStudio上传自己的项目到Bintray jCenter远程仓库(解决400错误)
- 面向对象程序设计c++版董正言张聪课本课后习题答案第五章
- 服装内部条码和服装国标码的区别
- 食品品牌如何做好消费需求洞察直抵消费者心智
- android原生输入法皮肤,duang_精选布局_触屏皮肤_皮肤布局_百度手机输入法
- Coursera | Introduction to Data Analytics(IBM) | Quiz答案
- 离开nbsp;果真如此轻易?
- Linux基础常见指令讲解(小白入门必看)