【问题标题】:Iterator and *Iterator type迭代器和*迭代器类型
【发布时间】:2016-02-02 19:09:22
【问题描述】:

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

*Iterator unknown_type_var;

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

【问题讨论】:

  • 您是否尝试过使用auto

标签: 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;
    

    【讨论】:

      猜你喜欢
      • 2014-03-21
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 2012-10-11
      相关资源
      最近更新 更多