使用模板

时间:2016-01-21 16:06:09

标签: c++ templates vector

我想打印矢量元素。以下是我的代码。

This is my code

搜索后,我发现以下代码及其工作原理:

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

但我们不能使用迭代器来访问元素吗?如果可能的话,怎么样?

2 个答案:

答案 0 :(得分: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 :(得分:0)

如果你正在使用C ++ 11,你可以auto it = vec.begin(),这样你就不必担心it的类型了。