带有模板的 C++ 迭代器

标签 c++ iterator

我有一个关于如何在模板方式下使用迭代器的问题。
这是我正在尝试做的一个例子,问题是,在 for 循环中,我如何初始化迭代器 pp ?

我看过一个类似的问题,但由于我是初学者,所以我不能完全理解。
What should the iterator type be in this C++ template?
任何人都可以提供帮助并提供一些简单的解释吗?

#include <iostream>
#include <vector>

template <class T>
void my_print(std::vector<T> input){
    for(std::vector<T>::iterator pp = input.begin(); pp != input.end(); ++pp)
        std::cout << *pp << "\n";
}
int main(int argc,char* argv[]){
    std::vector<int> aa(10,9);
    my_print(aa);

    return 0;
}

我得到的错误信息:
“std::vector::iterator”被解析为非类型,但实例化产生一个类型

最佳答案

iterator之前添加一个typename

#include <iostream>
#include <vector>

template <class T>
void my_print(std::vector<T> input)
{
    for (typename std::vector<T>::iterator pp = input.begin(); pp != input.end(); ++pp)
    {
        std::cout << *pp << "\n";
    }
}
int main(int argc, char* argv[])
{
    std::vector<int> aa(10, 9);
    my_print(aa);

    return 0;
}

来源:http://www.daniweb.com/software-development/cpp/threads/187603/template-function-vector-iterator-wont-compile

关于带有模板的 C++ 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20866892/

相关文章:

C++代码循环问题

Python range() 和 zip() 对象类型

java - Deque 实现中的 addFirst() 方法

c++ - TCHAR 与 LPSTR 不兼容

c++ - 如何测试 argc 然后将默认值分配给 argv[1]?

java - 如何制作一个操纵另一个程序 ui 的程序

c++ - 在 Windows XP 中使用 C/C++ 中的动态数组最简单的方法是什么?

python - __iter__ 方法的主体有什么意义?

java - Struts2 迭代器用不同类型填充下拉列表

c++ - regex_replace 在 Windows 上不起作用