C++ 保存向量在另一个向量中的位置

C++ 保存向量在另一个向量中的位置,c++,vector,indexing,iterator,C++,Vector,Indexing,Iterator,我有一个点向量,用这些点生成一些几何图形。为了节省内存,我使用向量的索引作为参考,而不是点本身 例如: Triangle(index[0], index[4], index[6]); 而不是 Triangle(Point(x0, y0), Point(x4, y4), Point(x6, y6)); 但是,我需要存储一些位置以供以后参考。 最好将其保存为int还是迭代器?与int相比,迭代器占用了多少空间 具体: 是吗 std::vector laterUse 或 std::vector 优

我有一个点向量,用这些点生成一些几何图形。为了节省内存,我使用向量的索引作为参考,而不是点本身

例如:

Triangle(index[0], index[4], index[6]);
而不是

Triangle(Point(x0, y0), Point(x4, y4), Point(x6, y6));
但是,我需要存储一些位置以供以后参考。 最好将其保存为int还是迭代器?与int相比,迭代器占用了多少空间

具体: 是吗
std::vector laterUse
std::vector


优点和缺点是什么?我更感兴趣的是节省内存而不是速度。

迭代器一旦修改了它们所迭代的集合,就会变得无效。索引更好,但您需要保证集合不会发生重新排序。相反,如果实际对象存储在修改过的向量中,则存储
点*
点*
也可能变得无效。如果不修改向量,我认为整数和指针在内存方面会产生相同的解决方案,但指针会保存一个间接的方向。指针是一个有趣的想法。然而,我从来没有完全为自己解决过这些问题。我可以马上用指针代替索引,不是吗?我只是不知道如何从std:.vector::iterator获取指向点的指针。std::vector在64位系统上保存32位(注意它是无符号的)@NO_NAME:我应该更清楚,指针不应该指向向量中的内存地址。
对象本身可以动态分配,插入到第一个向量(点*
)中,然后第二个向量指向与第一个向量相同的内存位置。拥有内存的第一个向量负责删除。