【问题标题】:Random Access Iterator to char array随机访问迭代器到 char 数组
【发布时间】:2012-10-06 13:44:56
【问题描述】:

是否可以使用std::iterator<std::random_access_iterator_tag, const char*> 作为 char 数组的迭代器?查看std::iterator 定义,它只有默认、复制和移动构造函数,没有T 构造函数。这是否意味着我需要继承和实现自己的迭代器?

【问题讨论】:

  • const char* 已经是一个迭代器(或 const_iterator),所以你真的不需要继承任何东西就可以到达那里。 std::iterator 可以在构建其他迭代器类时用作基类,但这不是必需的。

标签: c++ c++11 iterator


【解决方案1】:

std::iterator 无法为您提供帮助。确实可以从它继承来实现自己的迭代器,但您已经可以将指向数组的指针用作随机访问迭代器。

您甚至可以使用std::beginstd::end 来获取这些迭代器。

【讨论】:

  • 如果我只有一个 const char* 和一个 std::size_t 而不是 std::array 怎么办?
  • @Graeme 在这种情况下,我认为您正在寻找 [p, p + size) 作为范围。这取决于 psize 的值是否正确。
猜你喜欢
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 2019-10-07
  • 2016-10-16
  • 2021-03-02
  • 2019-12-06
相关资源
最近更新 更多