2016-01-21 39 views
0

我想打印矢量的元素。以下是我的代码。使用模板传递时访问矢量元素

This is my code

搜索后,我发现下面的代码和它的工作:

for(int i=0;i<vec.size();i++) 
    cout<<vec[i]<<" "; 

但是我们不能用迭代器来访问的元素?如果可能的话,如何?

+1

而不是链接到的(外部)图像,请在你的问题中的代码。 –

+1

错误告诉你你需要做些什么来修复它。你也可以使用[基于范围的循环](http://en.cppreference.com/w/cpp/language/range-for) – NathanOliver

+0

hackerrank不是一个学习C++的好地方 –

回答

0

如果您使用C++ 11,则只需执行auto it = vec.begin(),这样您就不必担心it的类型。

+1

在C++ 11中,只需使用ranged('for(const auto&e:a)') – Jarod42

3

typename丢失:

template <typename T> 
void printArray(const std::vector<T>& a) 
{ 
    for (typename std::vector<T>::const_iterator it = a.begin(); it != a.end(); ++it) { 
     // ... 
    } 
} 

在C++ 11,你可以简单地写道:的

template <typename T> 
void printArray(const std::vector<T>& a) 
{ 
    for (const auto& e : a) { 
     std::cout << e << std::endl;; 
    } 
} 
+1

可能有助于说明为什么需要typename。不是说你必须像编译器告诉他为什么已经。 – NathanOliver

+0

哦,关闭它会奏效。我一直在忘记那个。 – NathanOliver