我有一个矢量<对象> myvec我在代码中使用它来保存内存中的对象列表。我把一个指向该矢量当前对象的“正常” Ç方式使用指向矢量指针Vs的指针迭代器
Object* pObj = &myvec[index];
这一切工作正常,如果...... myvec会不会种植足够大,它是在到处移动push_back此时pObj变得无效 - 向量保证数据是连续的,因此它们不会将该向量保持在相同的存储位置。
我可以预留myvec足够的空间来防止这种情况,但我不喜欢这种解决方案。
我可以保留所选myvec位置的索引,当我需要使用它时,只需直接访问它,但对我的代码进行昂贵的修改。
如果作为载体被重新分配迭代器保持其完整引用我不知道/移动如果是的话我能不能代替
Object* pObj = &myvec[index];
通过类似
vector<Object>::iterator = myvec.begin()+index;
什么含义这个的?
这是可行的吗?
保存指向矢量位置的指针的标准模式是什么?
Cheers
保持索引是“昂贵的”?咩。 – akappa
保留迭代器的标准模式是预先保留空间,或使用保留迭代器的容器。无论哪种方式都有妥协。 –
你在下面说你“几乎像数组一样使用向量”,这正是你应该做的 - 但是我怀疑你的整个问题是一些糟糕的设计决定的结果。不知何故,这应该不成问题......只是在不了解背景的情况下很难说清楚。 –