【问题标题】:Iterator and *Iterator type迭代器和*迭代器类型
【发布时间】:2016-02-02 19:09:22
【问题描述】:
如果我有一个包含未知类的容器的迭代器,我可以通过以下方式声明该未知类型的变量:
*Iterator unknown_type_var;
unknown_type 有默认的 ctor,所以这不是问题。但是这样的方法存在吗?或者有没有其他方法来声明一个类型的变量,我有一个容器的迭代器,它包含这个类型。
【问题讨论】:
标签:
c++
iterator
containers
variable-declaration
【解决方案1】:
如果它是一个符合标准的容器,它有一个名为 value_type 的嵌套 typedef,它给出了所包含值的类型。该 typedef 也可通过 iterator_traits 获得:std::iterator_traits<iterator_type>::value_type。并且迭代器类型可以作为容器中的嵌套 typedef 使用。
【解决方案2】:
如果您没有可用的value_type,并且您不能使用auto,因为您没有立即分配(尝试找到一种方法),那么您可以使用decltype:
decltype(*declval<Iterator>()) unknown_type_var;