3 回答

TA貢獻1921條經驗 獲得超9個贊
如果_RangeT是類型,則在class_RangeT的范圍內查找unquali?ed-id開始和結束,就好像通過類成員訪問查找(3.4.5)一樣,并且如果其中一個(或兩者都)?nds至少有一個聲明、BEG-Exr和End-Exr是 __range.begin()
和 __range.end()
分別;
-否則,開始-支出和結束-費用是 begin(__range)
和 end(__range)
,分別使用依賴于參數的查找(3.4.2)查找開始和結束的位置。出于這個名稱查找的目的,命名空間std是一個關聯的命名空間。
定義 begin
和 end
成員函數 定義 begin
和 end
ADL將找到的免費函數(簡化版本:將它們與類放在同一個名稱空間中) 專門性 std::begin
和 std::end
std::begin
begin()
using std::begin;
begin(a)
.
begin()
end()
std::begin()

TA貢獻1808條經驗 獲得超4個贊
template <typename DataType> class PodArray { public: class iterator { public: iterator(DataType * ptr): ptr(ptr){} iterator operator++() { ++ptr; return *this; } bool operator!=(const iterator & other) const { return ptr != other.ptr; } const DataType& operator*() const { return *ptr; } private: DataType* ptr; }; private: unsigned len; DataType *val; public: iterator begin() const { return iterator(val); } iterator end() const { return iterator(val + len); } // rest of the container definition not related to the question ... };
PodArray<char> array;// fill up array in some wayfor(auto& c : array) printf("char: %c\n", c);
- 3 回答
- 0 關注
- 678 瀏覽
添加回答
舉報