STL 如何验证map中是否存在key数值的存在

stl里map的使用问题,如何判断一个key值在map里面是否有存在的?
[问题点数:40分,结帖人modelsmall]
stl里map的使用问题,如何判断一个key值在map里面是否有存在的?
[问题点数:40分,结帖人modelsmall]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|STL 如何验证map中数值的存在_百度知道
STL 如何验证map中数值的存在
double&gt比如map&lt.8;int.0; 已知m[5]=0.3;m[7]=0;那么是否可用if(m[6]) 来直接判断6的存在性?这样是否已经默认添加了m[6]=0
我有更好的答案
那样确实会插入新数据,应该这样去判断std,double&int::map& iterator it = m.find(6);if (it != m.end()){/&#47
采纳率:100%
if(m[6])是判断了m[6]=0.0,但是有的编译器通不过,因为m[6]是double型的,不是布尔型。
为您推荐:
其他类似问题
stl的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 19, 距离下一级还需 181 积分
论坛徽章:0
typedef map&string, string&& &//如果第二个键值是其他不同类型的数据,如何办?
typedef vector&fields&
typedef vector&fields&::const_
int main(int argc, LPTSTR argv [])
{
& &&&
& &&&
& &&&iresult ite
& & f[&stationid&] = 10000;
& & f[&programid&] = &100&;
& & f[&starttime&] = ;
& & f[&endtime&]& &= 200;
& & f[&wage&] = 4000.55;
// printf(&stationid = %d\n&, f[&stationid&]);
& & result.push_back(f);
& & for(result::size_type i = 0; i & result.size(); ++i)
& & {
& && && & fields row = result[i];
& && && & for(sqlite_fields::const_iterator it = row.begin();it != row.end();++it)
& && && &{&&
& && && && && &&&printf(&%s = %d\n&,&&(*it).first, (*it).second); //map中的pari的第二个不同的数据类 型如何得到?如果用%d只能输出int类型的数据, 其他类型就无法输出.
& && && &}
& & }
& & & &
& & ...
复制代码
[ 本帖最后由 SybaseLU 于
19:59 编辑 ]
家境小康, 积分 1103, 距离下一级还需 897 积分
论坛徽章:0
typedef map&string, string&
f[&stationid&] = 10000;? 能=10000吗?可是string类型啊。
疑问中.......
白手起家, 积分 19, 距离下一级还需 181 积分
论坛徽章:0
编译是一点问题都没有, 我的问题正是你所要问的.如果每个一个pair的第二实值的类型不是一样,如:
pair&string, int&
pair&string, unsigned long&
pair&string, float&
...
复制代码
这样的pair该如何存放到map中.
家境小康, 积分 1103, 距离下一级还需 897 积分
论坛徽章:0
原帖由 dzbjet 于
20:05 发表
typedef map&string, string&
f[&stationid&] = 10000;? 能=10000吗?可是string类型啊。
疑问中.......
s = 10000; --& 把10000当成ascii 码解释了,所以能够编译过去。
s = 100; // 就是'd'
这样用是错误的。
家境小康, 积分 1103, 距离下一级还需 897 积分
论坛徽章:0
see boost::any implementaion source code.
家境小康, 积分 1235, 距离下一级还需 765 积分
论坛徽章:0
stl中的容器好像只能存一种类型的数据。
不过如果想存不同类型的数据,可以存它们的指针,
取出来后,强行转换一下就可以了。
或者象java那样,所有的对象都继承自一个基类,这样
也可以在一个容器内存不同的子类,不过取出来的时候要做类型转换
家境小康, 积分 1122, 距离下一级还需 878 积分
论坛徽章:0
先把int, unsigned long, float放到一个string里。
用的时候,再用相应的函数,转回来就是了。
或者,把int, unsigned long, float全部转成一个double。
白手起家, 积分 113, 距离下一级还需 87 积分
论坛徽章:0
原帖由 SybaseLU 于
19:54 发表
typedef map&string, string&& &//如果第二个键值是其他不同类型的数据,如何办?
typedef vector&fields&
typedef vector&fields&::const_
使用template,或者可预知并可以枚举的小量类型可以使用union,或者使用void*.
白手起家, 积分 19, 距离下一级还需 181 积分
论坛徽章:0
请赐教, 如何存放不同类型的指针?
pair&string, int*&
pair&string, char*&
pair&string, unsigned long*&
复制代码
就这样能放到map容器中吗?
家境小康, 积分 1103, 距离下一级还需 897 积分
论坛徽章:0
pair&string, void*&
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处跪求大神指点一个关于C++ STL map 查找关键字的问题_百度知道
跪求大神指点一个关于C++ STL map 查找关键字的问题
#include &map&
#include &utility&
#include &iostream&
int main()
int mark=0;
char ch[10];
//使用pair实现数据插入
map&int, string& mapS
mapStudent.insert(pair&int, string&(1, &张三&));
我有更好的答案
map是看成一种&key , value&的键值对,你可以用一个迭代器对这个map进行遍历,对每个 map 的value(也就是iter-&second)与你输入的姓名比较,如果相同输出学号(iter-&first)。你错误的原因是 map 中的
count方法参数是 它的 key, 而你传的实际上是 value,类型不对,而且这个方法是计算与key相同的数量
我就是不懂怎么比较value与我输入的姓名的语法.一直提示:error C2664: 'strcmp' : cannot convert parameter 1 from 'class std::basic_string&char,struct std::char_traits&char&,class std::allocator&char& &' to 'const char *'
&map& 的count()方法的参数是 map 的key, 不是value,返回的是与key相同的键值对数量,你的if(mapStudent.count(ch))是什么意思,肯定错,可以用迭代器遍历&map&,比较每一个value与你输入的ch才行,然后输出才行的。你的那个错误是strcmp方法传的参数不合法的问题
采纳率:35%
no &&&ch&&iostream&string, int& 姓名-学号对应; m.insert(pair&lt,直接出学号,查姓名;iter-&first&lt,就浪费了这个数据结构的效率:& cout&&&// if(m;&lt首先,string&int main(){ char ch[10];/这种方法是按学号查找 if(&定义个迭代器 iter=m:iterator iter。。#include &:;string, int&string,int&m[ch] &; cin&&ch:&(&张三&; m.insert(pair&lt,3));&string,int&/ 提示错误
cout&(&李四&;string,int&gt!=m.end())
cout&lt,1));string,int&&#include &map&gt。应该&把学号作为键,却查找的是姓名值; else
cout&lt,应该查找键;&lt,问题就在这
/iter-&second&&&的学号是;&lt,2)); map& m.insert(pair&lt。你写&/这种方法是按姓名查找;&&(&king&.count(ch))
&#47.find(ch);
那如果我要提供两种功能,姓名查找方式和学号查找方式怎么办?
为您推荐:
其他类似问题
stl的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 map中是否存在key 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信