多重映射

允许键重复的映射,表示一对多的逻辑关系。不支持下标运算符。
根据键查找匹配的元素集合:
pair<IT, IT> equal_range (KEY const& key);
^ ^
| |
begin end
begin指向第一个和参数key匹配的元素;
end指向最后一个和参数key匹配的元素的下一个元素。
IT lower_bound (KEY const& key); // 匹配下限迭代器
IT upper_bound (KEY const& key); // 匹配上限迭代器

#include <iostream>
#include <map>
using namespace std;
int main (void) {
    multimap<string, int> msi;
    msi.insert (make_pair ("张飞", 80));
    msi.insert (make_pair ("赵云", 70));
    msi.insert (make_pair ("关羽", 60));
    msi.insert (make_pair ("张飞", 50));
    msi.insert (make_pair ("赵云", 40));
    msi.insert (make_pair ("关羽", 30));
    typedef multimap<string, int>::
        iterator IT;
    for (IT it = msi.begin (); it !=
        msi.end (); ++it)
        cout << it->first << ""
            << it->second << endl;
    cout << "--------" << endl;
    pair<IT, IT> res = msi.equal_range (
        "张飞");
    int sum = 0;
    for (IT it = res.first; it !=
        res.second; ++it)
        sum += it->second;
    cout << "张飞:" << sum << endl;
    return 0;
}
原文地址:https://www.cnblogs.com/LuckCoder/p/8668482.html