(转)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

  

 
posted @ 2014-04-29 19:44  丁香树  阅读(132)  评论(0编辑  收藏  举报