/* multimap特性 key可以重复 不支持下标访问 */ #include<iostream> #include<string> #include "print.h" #include<map> using namespace std; typedef pair<int,string> pairmp; typedef multimap<string,double> MS; int main() { MS m; m.insert(MS::value_type("t1",1000)); m.insert(MS::value_type("t1",1300)); m.insert(make_pair("t2",3000)); m.insert(MS::value_type("t1",1800)); m.insert(make_pair("t2",100000)); m.insert(MS::value_type("t1",1600)); print(m.begin(),m.end()); MS::iterator ib=m.begin(),ie; MS m2; while(ib!=m.end()) { string name=ib->first;//first:K,second:V ie=m.upper_bound(name);//同一个key的一个区别上界 double sum=0.0; while(ib!=ie) { sum+=(ib++)->second; } m2.insert(make_pair(name,sum));//处理,并加入一个容量 } print(m2.begin(),m2.end()); return 0; }
运行: