迭代器和*迭代器类型

Iterator and *Iterator type

本文关键字:迭代器 类型      更新时间:2023-10-16

如果我有一个容器的迭代器,里面有未知的类,我可以通过以下方式声明一个未知类型的变量吗:

*Iterator unknown_type_var;

unknown_type具有默认 ctor,所以这不是问题所在。但是这样的方法存在吗?或者有没有其他方法可以声明我有一个容器迭代器的类型变量,它保存了这个类型。

如果它是一个符合标准的容器,它有一个名为 value_type 的嵌套 typedef,它给出了所包含值的类型。该typedef也可以通过iterator_traits获得:std::iterator_traits<iterator_type>::value_type。迭代器类型可用,你猜对了,容器中的嵌套 typedef。

如果您没有

可用的value_type,并且由于您没有立即分配而无法使用auto(尝试找到一种方法),那么您可以使用 decltype:

decltype(*declval<Iterator>()) unknown_type_var;