Chapter 3 : A Tour of C++: Abstraction Mechanisms のドラフトの 82 ページで、著者は次のように書いています。
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 ページで定義されていることに注意してください。