Map是c++的一个标准容器,它提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!
1.
map构造函数;
map<string , int >mapstring; map<int ,string
>mapint;
map<sring, char>mapstring; map< char
,string>mapchar;
map<char ,int>mapchar; map<int ,char >mapint;
2. map添加数据;
map<int ,string> maplive;
1.maplive.insert(pair<int,string>(102,"aclive"));
2.maplive.insert(map<int,string>::value_type(321,"hai"));
3,
maplive[112]="April";//map中最简单最常用的插入添加!
3,map中元素的查找:
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
map<int ,string >::iterator l_it;;
l_it=maplive.find(112);
if(l_it==maplive.end())
cout<<"we do not
find 112"<<endl;
else cout<<"wo find 112"<<endl;
4,map中元素的删除:
如果删除112;
map<int ,string
>::iterator
l_it;;
l_it=maplive.find(112);
if(l_it==maplive.end())
cout<<"we
do not find 112"<<endl;
else maplive.erase(l_it); //delete 112;
5.map的sort问题:
Map中的元素是自动按key升序排序,所以不能对map用sort函数
6.map的基本操作函数
C++ Maps是一种关联式容器,包含“关键字/值”对
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的函数
//使用map的Demo
1 void CLoadDllDemoDlg::OnBnClickedButton17() 2 {//STL MAP 3 /*定义CString为key,int值为value的map*/ 4 std::map<CString, int>mapDemo; 5 6 for(int i = 0; i < 10; i++) 7 {//添加数据 8 CString strKey; 9 strKey.Format(_T("key:%d"), i); 10 /*方法1*/ 11 mapDemo.insert(std::make_pair<CString, int>(strKey, i)); 12 /*方法2*/ 13 //mapDemo.insert(map<CString, int>::value_type (strKey, i)); 14 } 15 16 /*查找数据*/ 17 CString strFindKey; 18 std::map<CString, int>::iterator itFind; 19 for(int p = 0; p < 15; p++) 20 { 21 strFindKey.Format(_T("key:%d"), p); 22 itFind = mapDemo.find(strFindKey); 23 if(itFind != mapDemo.end()) 24 {//找到数据 25 int nVal = itFind->second; 26 if(9 == nVal) 27 {//删除该条数据 28 mapDemo.erase(itFind); 29 } 30 } 31 } 32 }