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和 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 关注
- 691 浏览
添加回答
举报
