允许键重复的映射,表示一对多的逻辑关系。不支持下标运算符。
根据键查找匹配的元素集合:
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; }