c++、テンプレートのtypenameとclassの違いについて知りたい
(参考書:明解c++中級編425ページ)
参考書のほうでclass
とtypename
についての言葉の違いの説明がなく混乱しているので説明をお願いしたいです、ググりましたがいろんなことを言っているサイトがあってどれがほんとなのかわかりません。class
とtypename
のどちらも使い方が同じというサイトもあるので混乱しています。
また、for
文にtypename
という記述を入れないとエラーになるのですがどうしてでしょうか?
template<typename allocator>
void put_string_vector(const vector<string, allocator>& v)
{
cout << "{";
for (typename vector<string, allocator>::size_type i = 0; i < v.size(); i++) {
cout << " ";
for (typename vector<string, allocator>::size_type j = 0; j < v[i].length(); j++) {
cout << v[i][j];
}
cout << "\" ";
}
cout << "}";
}
int main()
{
vector<string> s1(3);
vector<string> s2;
s2.push_back("ABC");
s2.push_back("123");
s2.push_back("XYZ");
cout << " s1 =";
put_string_vector(s1);
cout << "\n";
cout << "s2 = ";
put_string_vector(s2);
cout << "\n";
_getch();
return 0;
}