在 C++ 中,如何从向量中删除元素?
- 从它所在的位置删除它,即让矢量调整大小
- 将要删除的元素与最后一个元素交换 st pop_back() 可以使用(我希望不涉及复制周围的所有内容......)
对于(1),我尝试了以下方法,但我不太确定它是否做了它应该做的事情(删除传递给 removeItem() 的项目),它看起来不是很优雅:
vector<Item*> items;
// fill vector with lots of pointers to item objects (...)
void removeItem(Item * item) {
// release item from memory
if (int i = getItemIdIfExists(item) != -1) {
items.erase (items.begin()+i);
}
}
int getItemIdIfExists(Item * item) {
// Get id of passed-in Item in collection
for (unsigned int i=0; i<items.size(); i++) {
// if match found
if (items[i] == item) return i;
}
// if no match found
return -1;
}