map映射容器的数据结构是采用红黑树来实现的,插入元素的键值不可重复。
map的插入:
在没有指定比较函数时,map元素的插入位置是按key的升序插入到红黑树中的。有三种插入方式。
map<int,int> M;
M.insert(pair<int,int>(1,2));//第一种:用insert函数插入pair数据
M.insert(map<int,int>::value_type(3,4));//第二种:用insert函数插入value_type数据
M[5]=6;//第三种:用数组方式插入数据
反向遍历:
map<int, int>::reverse_iterator iter;
for(iter = M.rbegin(); iter != M.rend(); iter++)
{
cout<<iter->first<<" "<<iter->second<<endl;
}
数据查找(key值匹配):
M.count(3);//查找成功返回1,失败返回0
M.find(3)==M.end();//查找成功返回数据所在位置的迭代器,失败返回等于end函数返回的迭代器
数据删除:
M.erase(1);//单个数据的删除。
//在循环体中删除数据
//例如删除满足条件的元素·
typedef map<int,int>::iterator ITER;
for(ITER iter=M.begin(); iter!=M.end();)
{
if (iter->second == 1)
{
M.erase(iter++);//防止iter成为野指针。
}
else
{
iter++;
}
}