C ++从矢量中删除作为映射值

时间:2016-10-17 13:57:37

标签: c++ dictionary vector iterator erase

我有这个映射,其中键是字符串,值是Product类型的向量(包含和int&#34的结构;代码"变量和一些其他变量)。 给定代码,我想删除存在该代码的所有出现的向量元素,并且我需要对所有地图元素执行此操作。 这就是我正在尝试的,我的程序崩溃了:

void removeByCode(map<string, vector<Product>> &products, int code){
    for (auto productlist: products){
        for (auto i=productlist.second.begin(); i != productlist.second.end(); i++){
            if ((*i).code==code)
                i = productlist.second.erase(i);
        }
    }
}

这是崩溃的一个用例(假设这是地图对的样子):

a:[代码:1;代码:2]

b:[代码:1]

c:[代码:1;代码:2]

要删除的代码:2

PS:我需要使用擦除(不是删除或其他方法)

0 个答案:

没有答案