我想要一个迭代器集合(列表、 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/