在第 3 章草稿的第 82 页:C++ 之旅:抽象机制作者写道:
如果我们还想对Vector使用 range-for 循环,我们必须定义合适的begin()和end()函数:
template<typename T>
T∗ begin(Vector<T>& x)
{
return &x[0]; // pointer to first element
}
template<typename T>
T∗ end(Vector<T>& x)
{
return x.begin()+x.size(); // pointer to one-past-last element
}
鉴于这些,我们可以写:
void f2(const Vector<string>& vs) // Vector of some strings
{
for (auto s : vs)
cout << s << ’\n’;
}
请注意,类模板Vector在草案的第 81 页中定义。