【问题标题】:c++ vector of iteratorsc++ 向量的迭代器
【发布时间】:2010-10-25 09:09:59
【问题描述】:

我知道我可以在一个 vector<int*> onev_point_2_all 上使用 for 循环来指向向量的数量 std::vector<int> 等等。但是我如何使用迭代器来做到这一点有没有一种方法可以创建迭代器的向量而不是指针?

【问题讨论】:

  • 没有什么能阻止您创建vector< std::vector<int>::iterator >。你有什么问题?您尝试了哪些方法?您在哪里遇到错误?
  • 谢谢,是的,我试过了,但我不知道如何或是否有任何限制与指针,谢谢

标签: c++ pointers iterator vector


【解决方案1】:

你可以有一个迭代器的向量,不一定是向量的迭代器,也不一定是同一个集合的迭代器,但它们必须都是相同的类型。

您不需要底层集合来取消引用它们,因此如果您知道它们都是有效的迭代器并且这就是您想要做的一切,那么这样做就没有问题。如果它们是非常量迭代器,您还可以设置它们的值(如果没有设置迭代器)。

如果您需要检查它们以查看它们是否是“结束”迭代器,或者将它们从它们的集合中删除,那么您将需要知道迭代器背后的基础集合。如果它们都来自同一个集合,这很简单,但如果它们来自不同的集合,则需要与它们一起存储指向其基础集合的指针。请注意,它必须是指向基础集合的指针,而不是引用,就好像它们是向量项一样,它们必须是可分配的。

【讨论】:

    猜你喜欢
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多