我有一個項目在c + + 03有一個problem與數據結構:我使用矢量而不是列表,即使我不得不連續pop_front-push_back。但現在可以,因爲我現在需要重寫太多的代碼。彈出式元素從std :: vector和重用元素
我的做法是tu有一個最後frame_size點的緩衝區始終更新。所以每一幀我都要彈出並推回去。 (mayebe有這種方法的名稱?)
,所以我用這個代碼:
Point apoint; // allocate new point
apoint.x = xx;
apoint.y = yy;
int size = points.size()
if (size > frame_size) {
this->points.erase(points.begin()); // pop_front
}
this->points.push_back(apoint);
我有對象池的一些準備使用的代碼,所以我想:這是不是很棒的優化,但我可以將前端存儲在池中,因此我可以獲得apoint的分配時間。
好吧,這不是很有用,也許它沒有任何意義,但我只問教育的好奇心:我該怎麼做?
如何可以存儲矢量的擦除元件的存儲器用於重複使用它?這個問題有意義嗎?如果不是,爲什麼?
..因爲擦除不返回擦除矢量,它返回:
隨機訪問迭代器指向的元素 的新位置,然後函數調用,這是抹去了最後一個元素 如果操作刪除了 序列中的最後一個元素,則向量結束。
如果你持續使用'pop_front',而不想使用'list',那爲什麼不使用'std :: deque'? – 2012-02-27 11:08:56
問題是我有很多使用std :: vector的實用程序,所以我需要打開實用程序的存儲庫,將它分叉,然後模板(或重寫)所有采用向量來使其可用於列表或Deque的所有內容 – nkint 2012-02-27 11:11:40
Point重量的創造?您正在存儲對象,而不是指向向量中的對象的指針。如果要將對象保存在池中,最好將它們存儲爲指針而不是對象。 – Jagannath 2012-02-27 11:19:57