【发布时间】:2011-03-02 07:36:08
【问题描述】:
给定一个容器很容易获得相关的迭代器,例如:
std::vector<double>::iterator i; //An iterator to a std::vector<double>
我想知道在给定迭代器类型的情况下是否有可能推断出“相应容器”的类型(这里我假设每个容器只有一个(非 const)迭代器)。
更准确地说,我想要一个适用于所有 STL 容器的模板元函数(无需为每个容器手动专门化它),例如:
ContainerOf< std::vector<double>::iterator >::type
计算为
std::vector<double>
有可能吗? 如果不是,为什么?
提前感谢您的帮助!
【问题讨论】:
-
您想了解迭代器的概念吗?即如果它是随机访问? STL 为此使用标签。通常没有理由知道迭代器来自哪里。
-
您是否事先知道您是否在 7 个 STL 容器之一中拥有迭代器,或者您是否还需要一个“else”子句?
标签: c++ templates stl metaprogramming