标准库函数begin和end

来源:互联网 发布:淘宝商标注册入口 编辑:程序博客网 时间:2024/05/22 03:51

在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版)》