编写一个函数,打印STL向量的每个元素尽管类型

时间:2010-09-06 14:03:31

标签: c++ stl

我尝试使用这段代码,但它无法正常工作

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" 

2 个答案:

答案 0 :(得分:2)

您错过了变量定义typename前面的MyIter,即它应该是typename vector<T>::iterator MyIter;

答案 1 :(得分:0)

你能更清楚一下这段代码是如何工作的吗?

它依赖于T :: operator&lt;&lt;的存在 - 如果您在代码中使用的任何实例化类型/类T都不存在,则代码将无法编译。对于内置类型,此代码可以正常工作。如果你将它用于你自己类型的向量,那么你必须实现operator&lt;&lt;每个人都可以这样做。

顺便说一句,使用++MyIter,效率更高。