在模板定义内部指定类型
比如说要写一个函数模板,功能是输出STL里面容器的第一个数。那么就应该把容器的类型传递进去
#include<iostream>
#include<vector>
using namespace std;
template<typename Parm>
void p(Parm &c)
{
typename Parm::iterator it=c.begin();
cout<<*it<<endl;
}
void main()
{
vector<int>a(10,10);
p(a);
}
Parm就是容器的类型, Parm::iterator指的是这个类型容器的迭代器。前面加个typename是显式的告诉编译器这一个类型成员。
#include<iostream>
#include<vector>
using namespace std;
class P
{
public:
typedef unsigned int size_type;
};
template<typename Parm>
void fcn()
{
typename Parm::size_type a=10;
cout<<a<<endl;
}
void main()
{
fcn<P>();
}
下面呢就是普通的类,类的作用域下面定义了一个新的类型size_type,使得我们可以以独立于机器的方式使用容器。
然后我们在这个函数里面使用这个类型成员。