自己写的关于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的函数
*/