尽管能计算得到尾后指针,但这种用法极易出错。为了让指针的使用更简单、更安全,c++新标准引入了两个名为begin和end的函数。这两个函数与容器中的两个同名成员功能类似,不过数组毕竟不是类类型,因此这两个函数不是成员函数。正确的使用形式是将数组作为它们的参数:
int a[] = { 0,1,2,3,4,5,6,7,8,9 }; int *beg = begin(a);//指向a首元素的指针 int *last = end(a);//指向a尾元素的下一位置的指针
不能用动态数组
这两个函数定义在iterator头文件中。
使用这两个函数可以很容易写出一个循环并处理数组中的元素。例如:
int *pbeg=begin(a),*pend=end(a); while(pbeg!=pend&&*pbeg>=0) ++pbeg;
特别要注意,尾后指针不能执行解引用和递增操作。
通过函数传参的数组无法调用这两个函数,因为数组形参实际传递的是数组指针。