c++ - 如何使用(模板)迭代器值创建一个集合?

标签 c++ c++11 iterator

我想要一个迭代器集合(列表、 vector 、映射等),但代码不起作用:

template <class T>
class A
{
    std::list<std::unordered_map<int, T>::iterator> l; //doesn't compile
    std::unordered_map<int, std::vector<T>::iterator> um; //doesn't compile
    std::vector<std::list<T>::iterator> v; //doesn't compile either
};

最佳答案

iterator 是一个 dependent name ,您需要使用 typename 关键字对其进行限定:

std::list<typename std::unordered_map<int, T>::iterator> l;
          ^^^^^^^^
std::unordered_map<int, typename std::vector<T>::iterator> um;
                        ^^^^^^^^
std::vector<typename std::list<T>::iterator> v;
            ^^^^^^^^

关于c++ - 如何使用(模板)迭代器值创建一个集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34188352/

相关文章:

c++ 映射删除函数不能与迭代器一起正常工作

c++ - 将 lambda 直接传递给函数

c++ - 遍历模板参数包,不带参数的特化有什么作用?

c++ - 返回迭代器似乎使它无效

c++ - QSet::find() 迭代器解引用出现 “cannot convert ‘this’ 指针”错误?

c++ - 如何删除C++字符串中所有出现的字符

c++ - 使用 opencv 匹配一组图像中的图像,以便在 C++ 中进行识别

c++ - 从模板中通过引用返回

JavaScript 从特定元素/索引开始迭代 Map()

c++ - 如何在C/C++中模拟中断?