繁体   English   中英

迭代器和*迭代器类型

[英]Iterator and *Iterator type

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM