3 回答
TA贡献1921条经验 获得超9个赞
如果_RangeT是类型,则在class_RangeT的范围内查找unqualified-id开始和结束,就好像通过类成员访问查找(3.4.5)一样,并且如果其中一个(或两者都)finds至少有一个声明、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 关注
- 644 浏览
添加回答
举报