相关疑难解决方法(0)

从Vector中删除元素

在C++中,如何从向量中删除元素?

  1. 从它的位置删除它,即让矢量调整大小
  2. 交换要删除的元素与最后一个元素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;
}
Run Code Online (Sandbox Code Playgroud)

c++ vector erase

3
推荐指数
1
解决办法
2653
查看次数

标签 统计

c++ ×1

erase ×1

vector ×1