VC2005中怎么查询map的第二个值 我想找个一个map中的第二个值,想问问应该怎么写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是这样,我定义了一个map,map<long,string>,我除了想查询一个map的key,还想根据map中的第二个值找到一个项,然后我想把这个项删除,代码如下:for (map<long,string>::iterator it1 = m_contCallidUcid.begin(); it1 != m_contCallidUcid.end(); it1++) { if (it1->second == ucid) { callid = it1->first; TRACELOG(Information, _T("改变 m_contCallidUcid 中的 key:")<<it1->first); it = it1; } } m_contCallidUcid.erase(it);可是当map中没有这个值的时候,他会报错,我应该怎么写啊 bool bFind = false;for (map<long,string>::iterator it1 = m_contCallidUcid.begin(); it1 != m_contCallidUcid.end(); it1++){if (it1->second == ucid){callid = it1->first;TRACELOG(Information, _T("改变 m_contCallidUcid 中的 key:")<<it1->first);it = it1;bFind = true;}}if (bFind){m_contCallidUcid.erase(it);} Map还用迭代器,完全体现不了Map的作用了 2楼已经给出你要的答案了.就是你没有判断it是否找到, 你的程序是不管找没有找到都去erase,想erase没有的,当然会出错了. 哦,it我是在之前定义的。我明白三楼的意思啦,还想问个问题,我这个map<long,string>的,我想把第二个值直接取出来,这样写的stirng id = it1->second;可是出来的值是乱码啊,这是为什么,我调试了一下,看见it1里面的值和map中我需要的那个值不同啊,问一下是应该这样的吗 谢谢2楼,用你的方法实现啦,问一下4楼,如果不用迭代器map怎么取其中的值呢 iterator::iter = map.find(); MFC中将RichEdit控件拉到对话框上为什么运行不弹出窗口 MFC tab控件的选项卡字体居中 关于邮件收发程序的问题 我用socket api编程时候,client怎么样设置连接的server端地址?? 请问下列程序的结果,谢谢! 如何将一个字符串的内容放到鼠标任意选择的编辑框里,比如:网页的表单等。 下位机怎么保证数据到达?如何保证数据一至性,要不要自己定义协议? 公有函数 C++ API串口通信 该<<com技术原理与应用>>怎么看?推荐本学习VC++开发COM部件的书 连接字符串属性无效 如何从注册表里面获取打印机的驱动字符串?(不用16位的GetProfileString)
for (map<long,string>::iterator it1 = m_contCallidUcid.begin(); it1 != m_contCallidUcid.end(); it1++)
{
if (it1->second == ucid)
{
callid = it1->first;
TRACELOG(Information, _T("改变 m_contCallidUcid 中的 key:")<<it1->first);
it = it1;
}
}
m_contCallidUcid.erase(it);
可是当map中没有这个值的时候,他会报错,我应该怎么写啊
for (map<long,string>::iterator it1 = m_contCallidUcid.begin(); it1 != m_contCallidUcid.end(); it1++)
{
if (it1->second == ucid)
{
callid = it1->first;
TRACELOG(Information, _T("改变 m_contCallidUcid 中的 key:")<<it1->first);
it = it1;
bFind = true;
}
}
if (bFind)
{
m_contCallidUcid.erase(it);
}