1.map大小
map<int, string> M;
int Size = M.size();
2. 数据遍历
map<int, string>::iterator it;//前向迭代器
for(it = M.begin(); it!= M.end(); it++)
cout<<it->first<<" "<<it->second<<endl;
map<int, string>::reverse_iterator is;//反向迭代器
for(is = M.rbegin(); is != M.rend(); is++)
cout<<is->first<<" "<<is->second<<endl;
3. 查找并获取map中的元素(Key)
it=M.find(1);
//用find函数来定位数据出现位置,它返回的一个迭代器,当数据出现时,它返回数据所在位置的迭代器,
//如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器
if(M.count(1)!=0)
//用count函数来判定关键字是否出现
4.删除map中的元素
//用迭代器删除
map<int, string>::iterator it;
it = M.find(1);
if(it!=M.end()) M.erase(it);
//用关键字删除
int f = M.erase(1);//如果删除了会返回1,否则返回0
//删除全部
M.erase( M.begin(), M.end() );
5.map关键字排序
map中的元素是自动按Key升序排序,STL中默认是采用小于号来排序的。关键字是一个结构体,涉及到排序就会出现问题,因为它没有小于号操作。需要将<重载
struct Student
{
int id;
string Name;
bool operator < (Student const& a) const
{ //这个函数指定排序策略,按id排序,如果id相等的话,按Name排序
if(id < a.id) return true;
if(id == a.id)
return Name.compare(a.Name) < 0;
return false;
}
}