盡管能計算得到尾后指針,但這種用法極易出錯。為了讓指針的使用更簡單、更安全,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;
特別要注意,尾后指針不能執行解引用和遞增操作。
通過函數傳參的數組無法調用這兩個函數,因為數組形參實際傳遞的是數組指針。