【问题标题】:why can't int type be the iterator in STL vector?为什么 int 类型不能成为 STL 向量中的迭代器?
【发布时间】:2014-10-28 07:27:24
【问题描述】:

问题是《c++ STL》一书vector之后的第一个问题。我无法回答。而且我在网上冲浪时找不到答案。

【问题讨论】:

  • 它真的是一个 STL 向量,还是来自 C++ 标准库的 std::vector?无论如何,迭代器必须是可解引用的。你不能取消引用int
  • 抱歉,我找不到一本名为“C++ STL”的书。是 N.M. Josuttis 的“C++ 标准库”吗?我在Safari 查找了这个问题,但我找不到您所说的问题。
  • P.J.普劳格写的。 《C++标准模板库》。可能不同国家名字不一样。@TobiMcNamobi
  • 我不确定它到底在问什么。如果这意味着您所说的:为什么 can't ints 是迭代器 - 这是因为 int 不是迭代器。迭代器是具有对整数没有意义的操作(取消引用)的特定类,而整数具有对迭代器没有意义的操作(除法)。但是,如果问题意味着为什么不应该在 for 循环中使用 int 而不是迭代器 - 请参阅此线程:stackoverflow.com/questions/12702561/…

标签: stl


【解决方案1】:

这个问题的一个明显答案(如所问)是迭代器需要像指针一样工作,因此对于某些任意迭代器,*iterator 是有效代码(* 充当一元运算符)。

对于int,情况并非如此——给定一些i 类型为int,您不能使用*i(除非在* 将被解释为的上下文中)二元运算符,例如 j *i 做乘法)。

【讨论】:

    猜你喜欢
    • 2021-03-10
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多