我想打印矢量的元素。以下是我的代码。使用模板传递时访问矢量元素
搜索后,我发现下面的代码和它的工作:
for(int i=0;i<vec.size();i++)
cout<<vec[i]<<" ";
但是我们不能用迭代器来访问的元素?如果可能的话,如何?
我想打印矢量的元素。以下是我的代码。使用模板传递时访问矢量元素
搜索后,我发现下面的代码和它的工作:
for(int i=0;i<vec.size();i++)
cout<<vec[i]<<" ";
但是我们不能用迭代器来访问的元素?如果可能的话,如何?
如果您使用C++ 11,则只需执行auto it = vec.begin()
,这样您就不必担心it
的类型。
在C++ 11中,只需使用ranged('for(const auto&e:a)') – Jarod42
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;;
}
}
可能有助于说明为什么需要typename。不是说你必须像编译器告诉他为什么已经。 – NathanOliver
哦,关闭它会奏效。我一直在忘记那个。 – NathanOliver
而不是链接到的(外部)图像,请在你的问题中的代码。 –
错误告诉你你需要做些什么来修复它。你也可以使用[基于范围的循环](http://en.cppreference.com/w/cpp/language/range-for) – NathanOliver
hackerrank不是一个学习C++的好地方 –