(转)map用法
#pragma warning (disable:4786) #include <iostream> #include <map> #include <string> using namespace std; int main() { int i; map<string,string> s1; string c1,c2; /*for( i = 0 ; i < 5 ; i++) { cin>>c1>>c2; s1.insert(pair<string,string>(c1,c2)); }*/ //三种插入方法 s1.insert(pair<string,string>("01","Mike")); s1["03"] = "Jone" ; s1.insert(map<string,string>::value_type("04","Redy")); s1.insert(pair<string,string>("02","Tom")); s1.insert(pair<string,string>("05","Mary")); map<string,string> s2(s1); //赋值重载 //正向输出 cout<<"正向输出:\n"; map<string,string>::iterator it; for(it = s2.begin() ; it != s2.end() ; it++) { cout<<(*it).first<<" "<<it->second<<endl; } //反向输出 cout<<"反向输出:\n"; map<string,string>::reverse_iterator r_it; for(r_it = s2.rbegin() ; r_it != s2.rend() ; r_it++) { cout<<(*r_it).first<<" "<<r_it->second<<endl; } cout<<endl; //find() 查找 //find()函数返回一个迭代器指向键值为key的元素, //如果没找到就返回指向map尾部的迭代器。 cout<<"查找 key = \"03\" 且输出:\n"; it = s2.find("03"); if(it != s2.end()) cout<<it->first<<" "<<it->second<<endl; else cout<<"not find\n"; cout<<endl; // erase() 删除 cout<<"erase() 删除"<<endl; it = s2.find("03"); if(it == s2.end()) cout<<"not find\n"; else s2.erase(it); cout<<"删除后输出\n"; for(it = s2.begin() ; it != s2.end() ; it++) { cout<<(*it).first<<" "<<it->second<<endl; } cout<<endl; //empty() 判断是否为空 if(s2.empty()) cout<<"The map s2 is empty\n"; else cout<<"The map s2 is not empty\n"; map<string,string> s3; if(s3.empty()) cout<<"The map s3 is empty\n"; else cout<<"The map s3 is not empty\n"; cout<<endl; //size() 计算大小 //s2.max_size() 不是计算当前元素的个数,而是计算该容器最大可以容纳的元素个数 cout<<"size() 计算大小"<<endl; cout<<s2.size()<<endl; s2.insert(pair<string,string>("03","Jone")); cout<<s2.size()<<endl; cout<<s2.max_size()<<endl; cout<<endl; //swap() 对换两个容器 s3.insert(pair<string,string>("01","01")); s3.insert(pair<string,string>("02","02")); s3.swap(s2); for(it = s2.begin() ; it != s2.end() ; it++) { cout<<(*it).first<<" "<<it->second<<endl; } cout<<"对换\n"; swap(s2,s3);//This is the specialized template version of swap for(it = s2.begin() ; it != s2.end() ; it++) { cout<<(*it).first<<" "<<it->second<<endl; } cout<<endl; //count(key) 计算关键字为key的有几个,返回个数。 //这个更多用在multimap中 //clear() 清空 s1.clear(); if(s1.empty()) cout<<"The map s1 is empty\n"; cout<<endl; return 0; } /* begin() 返回指向map头部的迭代器 clear() 删除所有元素 count() 返回指定元素出现的次数 empty() 如果map为空则返回true end() 返回指向map末尾的迭代器 equal_range() 返回特殊条目的迭代器对 erase() 删除一个元素 find() 查找一个元素 get_allocator() 返回map的配置器 insert() 插入元素 key_comp() 返回比较元素key的函数 lower_bound() 返回键值>=给定元素的第一个位置 max_size() 返回可以容纳的最大元素个数 rbegin() 返回一个指向map尾部的逆向迭代器 rend() 返回一个指向map头部的逆向迭代器 size() 返回map中元素的个数 swap() 交换两个map upper_bound() 返回键值>给定元素的第一个位置 value_comp() 返回比较元素value的函数 */ 分类: C++ STL