如何使用(模板)迭代器值创建集合?

时间:2015-12-09 20:28:35

标签: c++ c++11 iterator

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

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
};

1 个答案:

答案 0 :(得分:1)

iteratordependent 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;
            ^^^^^^^^