STL map与multimap
Posted littleswan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL map与multimap相关的知识,希望对你有一定的参考价值。
1.map(映射)、multimap(多映射)
2.红黑树(数据结构)
3.1)insert:4种方法
2)count和find
3)erase:3种方法
注意:不能通过find进行修改!
#include<iostream> #include<map> #include<string> using namespace std; int map_function() { //这个map是用二叉树结构做的,二叉树中功能最强大的红黑树 //因为是红黑树,所以map容器中进行查找数据的时候也是非常的快的。 //map是非常大的一个容器是自动进行增长的 //map这个里面有自动去重的功能 map <int,string> a; //这个multimap可以插入重复的键值对 multimap<int, string>ma; map<string, int>分数; a.insert(map<int, string>::value_type(1, "one")); a.insert(map<int,string>::value_type(2, "two")); a.insert(map<int, string>::value_type(3, "three")); a.insert(make_pair(-1, "Minus One")); a.insert(pair<int, string>(1000, "One Thousand"));
//插入的后面这个显示不出来。 a.insert(pair<int, string>(1000, "One Thousandsss")); a[1000000] = "One Million"; a.insert(map<int, string>::value_type(1, "ones")); 分数.insert(make_pair("张飞", 99)); 分数.insert(make_pair("刘备", 56)); 分数["关羽"] = 87l; cout << "最简单的查找: " << endl; cout << 分数["刘备"] << endl; cout << a[3] << endl; cout << "map 里面一共有" << a.size() << "个key-value对数据" << endl; map<int, string>::const_iterator i; for (i = a.begin(); i!=a.end(); ++i) { cout << "key" << i->first<<" "; cout << "value" <<" "<< i->second.c_str(); cout << endl; } ma.insert(multimap<int, string>::value_type(3, "Three")); ma.insert(multimap<int, string>::value_type(45, "Forty Five")); ma.insert(make_pair(-1, "Minux One")); ma.insert(pair<int, string>(1000, "One Thousand")); ma.insert(pair<int, string>(1000, "One Thousandss")); ma.insert(pair<int, string>(1001, "One Thousand")); ma.insert(pair<int, string>(1001, "One Thousandss")); cout << endl << "multimap里面有" << ma.size() << "个数据." << endl; multimap<int, string>::const_iterator it; for (it = ma.begin(); it != ma.end(); ++it) { cout <<"key"<< it->first << " "; cout << "value"<<it->second << endl; } //进行查找 //cout << "multimap里面有" << ma.count(1000) << "个1000" << endl; //multimap<int, string>::iterator fi; //fi = ma.find(1000); //if (fi != ma.end()) //{ // cout << "找到了1000" << endl; // size_t n = ma.count(1000); // cout << "一共有" << n << "个1000" << endl; // for (size_t i = 0; i < n; ++i) { // cout << "key" << fi->first; // cout << "value" << fi->second << endl; // ++fi; // } // //cout << "找到了: " << fi->first << "=" << fi->second.c_str() << endl; //} //else //{ // cout << "没有找到" << endl; //} //进行删除操作 if (ma.erase(-1) > 0) cout << endl << "删除-1成功!" << endl; multimap<int, string>::iterator iElementFound = ma.find(45); if (iElementFound != ma.end()) { ma.erase(iElementFound); cout << "删除45成功" << endl; } cout<<"删除了"<< ma.erase(1000)<<"个1000"<<endl; multimap<int, string>::iterator itt; itt = ma.find(1000); if(itt!=ma.end()) { cout << "找到了1000" << endl; } else { cout << "没有找到1000" << endl; } ma.erase(ma.lower_bound(1001), ma.upper_bound(1001)); multimap<int, string>::iterator ittt; ittt = ma.find(1001); if (ittt != ma.end()) { cout << "找到了1001" << endl; } else { cout << "没有找到1001" << endl; } return 0; } int main() { map_function(); }
以上是关于STL map与multimap的主要内容,如果未能解决你的问题,请参考以下文章