【发布时间】:2013-11-18 18:04:49
【问题描述】:
我想在某个模板函数中迭代一个容器。如果容器是双端队列但不知道它存储的类型,我试过了:
template <typename T>
void PrintDeque(deque<T> d)
{
deque<T>::iterator it; //error here
for(it=d.begin();it!=d.end();it++)
cout<<*it<<" ";
cout<<endl;
}
或者,如果我对未知容器尝试此操作:
template <typename T>
void PrintDeque(T d)
{
T::iterator it; //error here
for(it=d.begin();it!=d.end();it++)
cout<<*it<<" ";
cout<<endl;
}
两者都给出编译错误。如何在模板函数内部创建一个迭代器,以便我可以迭代容器?
【问题讨论】:
-
尝试 deque
::iterator it 或者只使用 auto; -
1.通过引用或 const 引用传递 deque。 2. 试试
typedef typename T::iterator buffer_iterator; buffer_iterator it; -
那个
<typename T>是我的错误现在更正了。