for (std::map<string,int>::iterator it=m_mapMyMap.begin();it!=m_mapMyMap.end();it++)
{
auto jelly=it->second;// it->first是key值,it->second是对应这个key值里保存的数值,it是迭代器
if (jelly == str1) { //str1是我们想要的数据值
return it->second;
}
}
PS:在遍历的时候不要使用m_mapMyMap[key],因为如果在map里面没有对应这个key值的数据,就会在map中插入一条这个key的数据,数据一般为null
5、删除map中数据
void GameLayer::deleteVectorMember(std::string __mapKey) //传入的是key值
{
auto it = m_mapMyMap.find(__mapKey); //find返回的是一个迭代器,指向key值对应的数据,如果没有找到返回尾部的迭代器
if (it != m_mapMyMap.end()) {
m_mapMyMap.erase(it);
}
}
PS:如果没有传入键值,则可以使用4里面遍历map的方法,使用迭代器,迭代器指向的first是键值key,指向的second就是数据,
但是在遍历删除的时候,迭代器it的自增放在for循环体里面
if(it->second == xxxx)
{
it = m_mapMyMap.erase(it); //如果删除,将迭代器指向已删除元素的下一个位置
//这句与上面的一句是一样的作用
//m_mapMyMap.erase(it++);
}
else
{
++it;//这一句十分重要
}
6、清空map
m_mapMyMap.clear();