在C++中,我该如何从向量中删除元素?
- 直接从当前位置删除,即让向量调整大小
- 将要删除的元素与最后一个元素交换,以便使用pop_back()(希望不需要复制所有内容...)
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;
}
remove
而不是v.remove
吗? - Vlad