我创建了一个printVector
显示任何向量内容的函数(如果分别为它们定义了 << 运算符):
#include <iostream>
#include <vector>
using namespace std;
template<class templateType>
void printVector(vector<templateType>& container)
{
for(vector<templateType>::iterator it = container.begin(); it != container.end() ; it++)
{
cout << *it<<" ";
}
cout << endl;
}
int main()
{
vector<int> container = { 1,2,3 };
printVector(container);
}
在定义模板向量时,printVector
我无法创建其子类的对象iterator
:
vector<templateType>::iterator it; // ERROR
我通过使用解决了这个问题auto
:
#include <iostream>
#include <vector>
using namespace std;
template<class templateType>
void printVector(vector<templateType>& container)
{
for(auto it = container.begin(); it != container.end() ; it++)
{
cout << *it<<" ";
}
cout << endl;
}
int main()
{
vector<int> container = { 1,2,3 };
printVector(container);
}
但是我仍然想知道为什么我不能用它的名字 ( vector<templateType>::iterator
) 创建一个子类对象,但我可以用auto
?