我尝试使用这段代码,但它无法正常工作
template <class T>
void display(vector<T> vec)
{
vector<T>::iterator MyIter;
for(MyIter=vec.begin();MyIter!=vec.end();MyIter++)
cout<<*MyIter<<" ";
cout<<endl;
}
我的意思是,如果有办法避免为每个类型T(int,char,string)创建一个函数。我只在T中使用内置类型。
这是编译程序时的错误消息
10 C:\Documents and Settings\ASPIRE\Desktop\perms.cpp expected `;' before "MyIter"
答案 0 :(得分:2)
您错过了变量定义typename
前面的MyIter
,即它应该是typename vector<T>::iterator MyIter;
答案 1 :(得分:0)
你能更清楚一下这段代码是如何工作的吗?
它依赖于T :: operator&lt;&lt;的存在 - 如果您在代码中使用的任何实例化类型/类T都不存在,则代码将无法编译。对于内置类型,此代码可以正常工作。如果你将它用于你自己类型的向量,那么你必须实现operator&lt;&lt;每个人都可以这样做。
顺便说一句,使用++MyIter
,效率更高。