如何使我的自定义类型使用“基于范围的for循环”?
像现在很多人一样,我一直在尝试C+11带来的不同特性。我最喜欢的一个是“基于范围的循环”。
我知道:
for(Type& v : a) { ... }
相当于:
for(auto iv = begin(a); iv != end(a); ++iv){ Type& v = *iv; ...}
而那begin()简单地返回a.begin()标准容器。
begin()
a.begin()
但如果我想使我的自定义类型“基于范围的for循环”-感知 ?
我是不是应该专攻begin()和end() ?
end()
如果我的自定义类型属于命名空间xml,我是否应该定义xml::begin()或std::begin() ?
xml
xml::begin()
std::begin()
简言之,这方面的指引是甚麽?
郎朗坤
炎炎设计
相关分类