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和 endADL將找到的免費函數(簡化版本:將它們與類放在同一個名稱空間中) 專門性 std::begin和 std::end
std::beginbegin()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 瀏覽
添加回答
舉報
