在C++05中对于string类和各种容器类(如vector等)添加了T.begin()和T.end()两个成员函数,分别返回指向首元素的迭代器和尾后元素的迭代器。但是对于复合类型数组却一直只能用指针和数组元素地址来实现。以遍历输出数组为例:

int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int *b = &a[0], *e = &a[10];//数组a只有10个元素,下标范围是0~9,用&a[10]可以获取尾元素之后那个并不存在的元素的地址
for (b; b != e; ++b)
std::cout << *b << std::endl; 

为了统一string类和容器类与数组的操作,C++11引入了库函数begin()和end(),在iterator头文件中定义。这两个库函数与容器中的两个同名成员函数功能类似,不过数组毕竟不是类类型,因此这两个库函数不是成员函数,正确的使用形式是将数组作为它们的参数:

int *first = std::begin(a), *last = std::end(a);
for (first; first != last; ++first)std::cout << *first << std::endl;

库函数begin()和end()的返回值分别是数组首元素的地址和尾后元素的地址。

本文内容摘自《C++ Primer(第5版)》

标准库函数begin和end相关推荐

  1. C++标准库函数begin和end函数

    主要的目的 为了让指针更加简单.安全,引入了begin和end函数,这两个函数和容器中两个同名的成员函数类似.但是由于数组毕竟不是类类型,因此这两个函数不是成员函数. 正确的使用形式就是将数组作为他们 ...

  2. C++ Primer 5th笔记(chap 14 重载运算和类型转换)标准库函数对象

    1. 定义 标准库定义的函数对象(Library-Defined Function Objects):标准库在头文件functional中定义了一组表示算术运算符.关系运算符和逻辑运算符的类,每个类分 ...

  3. 使用标准库函数对象的例子

    14.42 使用标准库函数对象及适配器定义一条表达式,令其 1 统计打于1024的值有多少个. 2 找到第一个不等于pooh的字符串 3 将所有的值乘以2 14.43 使用标准库函数对象判断一个给定的 ...

  4. Keil MDK 中利用串口及c标准库函数printf为cortex-m3做调试输出(lpc1788)

    摘要: c标准库的printf是输出给显示器的,将printf函数进行修改,使其输出重定向至串口,就能实现目的.printf函数调用fputc函数完成实质输出单一字符的工作,因此将fputc函数修改使 ...

  5. 标准库函数、系统调用的区别

    标准库函数是对系统调用的封装,以方便移值. 人们在长期编程中发现使用系统调用有个重大的缺点,那就程序的移植性,比如说:linux 系统提供的系统调用的函数和 windows 就不一样,二者不单单是实现 ...

  6. c语言常用二个标准库函数

    常用二个标准库函数 exit itoa exit 原型:extern void exit(int retval); 用法:#include <stdlib.h> 功能:结束程序 说明:返回 ...

  7. 2/2 常用函数:标准库函数

    标准库函数:需要先导入模块再使用的函数 o. 查看库里面的所有函数: import 库名 dir(库名) o. 查看具体函数的功能: help(math.ceil) math库(模块): 数学运算的一 ...

  8. C语言模拟实现标准库函数之qsort() 2

    C语言模拟实现标准库函数之qsort() <1> https://blog.csdn.net/csdn_kou/article/details/80158194 排序数字 int int_ ...

  9. C语言模拟实现标准库函数之strcpy()

    strcpy(dest,src) strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*. char ...

最新文章

  1. 端到端TVM编译器(上)
  2. Python培训教程分享:Python模块如何导入__all__属性?
  3. ssl双向认证和单向认证的区别
  4. 数据库面试题【十五、优化查询过程中的数据访问】
  5. tornada-数据库
  6. TCP/IP 协议简单分析(建立连接握手过程)
  7. Confluence Cloud的Teams Message Extension
  8. mysql 7.x 集群_MySQL cluster 7.X集群部署配置
  9. 自然语言处理(NLP)书籍、项目、视频资源清单
  10. mysql全称量词_数据库整理(三) SQL基础
  11. C#工厂模式——简单工厂、工厂方法、反射+简单工厂、抽象工厂
  12. QT实现USB热插拔监控
  13. 全球诺贝尔奖得主最多的30所大学
  14. 学习LSL:Locate-Globally-Segment-locally
  15. monkey自动化测试脚本
  16. 奶粉中php是什么意思,那种奶粉dha含量高,奶粉中dha是什么意思
  17. LDAP服务器不支持chap认证,终端使用EIA进行PEAP-GTC认证失败的原因分析
  18. 【NLP】BiLSTM 命名实体识别 手写代码
  19. DBeaver(数据库管理软件) v22.0.1 使用安装教程
  20. 巨头进军社区团购后,团长却更焦虑了:被削权、难赚钱、没未来

热门文章

  1. 阿里程序媛凉安成长记:现世安稳,线上安稳
  2. [转]明朝出了个张居正 作者:秋风浩荡 -6
  3. BBED模拟并修复ORA-08102错误
  4. 2017-2020我的电脑不断蓝屏重启问题最终解决篇
  5. 三星SCH-I739官方原版ROM下载及刷机教程
  6. 软文投稿网站,增加外链
  7. atom运行mysql_atom下载安装及使用教程
  8. 计算机科学与技术专业研究生分数线,同济大学计算机科学与技术专业考研录取分数线-研究生分数线-历年分数线...
  9. 2018年上半年软件设计师试题参考答案
  10. c语言文件获取失败问题