代码之家  ›  专栏  ›  技术社区  ›  Jim Blackler

如何从C++ MultIMAP中删除特定的对?

  •  19
  • Jim Blackler  · 技术社区  · 15 年前
    #include <map>
    
    ...
    
    multimap<char,int> first;
    
    first.insert(pair<char,int>('a',10));
    first.insert(pair<char,int>('b',15));
    first.insert(pair<char,int>('b',20));
    first.insert(pair<char,int>('c',25));
    

    假设我现在要删除刚刚添加到地图中的一对。

    我举了一些例子来删除整个键条目,对于键“b”,它将同时删除“b”、15和“b”、20。

    1 回复  |  直到 15 年前
        1
  •  36
  •   Charles Salvia    15 年前

    你可以用 std::multimap<char, int>::equal_range ,它将为您提供一个迭代器范围,其中包含具有特定键的所有对。因此,如果您查找“b”,您将得到一个迭代器范围,其中包含所有以“b”为键的对。

    然后,您可以简单地遍历该范围,并通过删除迭代器来删除您认为合适的任何对。

    multimap<char,int> mymap;
    
    mymap.insert(pair<char,int>('a',10));
    mymap.insert(pair<char,int>('b',15));
    mymap.insert(pair<char,int>('b',20));
    mymap.insert(pair<char,int>('c',25));
    
    typedef multimap<char, int>::iterator iterator;
    std::pair<iterator, iterator> iterpair = mymap.equal_range('b');
    
    // Erase (b,15) pair
    //
    iterator it = iterpair.first;
    for (; it != iterpair.second; ++it) {
        if (it->second == 15) { 
            mymap.erase(it);
            break;
        }
    }
    
    推荐文章