我有一個矢量<對象> myvec我在代碼中使用它來保存內存中的對象列表。我把一個指向該矢量當前對象的「正常」 Ç方式使用指向矢量指針Vs的指針迭代器
Object* pObj = &myvec[index];
這一切工作正常,如果...... myvec會不會種植足夠大,它是在到處移動push_back此時pObj變得無效 - 向量保證數據是連續的,因此它們不會將該向量保持在相同的存儲位置。
我可以預留myvec足夠的空間來防止這種情況,但我不喜歡這種解決方案。
我可以保留所選myvec位置的索引,當我需要使用它時,只需直接訪問它,但對我的代碼進行昂貴的修改。
如果作爲載體被重新分配迭代器保持其完整引用我不知道/移動如果是的話我能不能代替
Object* pObj = &myvec[index];
通過類似
vector<Object>::iterator = myvec.begin()+index;
什麼含義這個的?
這是可行的嗎?
保存指向矢量位置的指針的標準模式是什麼?
Cheers
保持索引是「昂貴的」?咩。 – akappa
保留迭代器的標準模式是預先保留空間,或使用保留迭代器的容器。無論哪種方式都有妥協。 –
你在下面說你「幾乎像數組一樣使用向量」,這正是你應該做的 - 但是我懷疑你的整個問題是一些糟糕的設計決定的結果。不知何故,這應該不成問題......只是在不瞭解背景的情況下很難說清楚。 –