c ++迭代器向量

Ism*_*ush 1 c++ pointers iterator vector

我知道我可以std::vector<int>在一个vector<int*> onev_point_2_all等上使用 for 循环指向向量的数量。

Cas*_*Cow 5

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

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

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