[英]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.