请教一个关于map 初始化的问题

kissmsdn 2009-01-08 02:48:51
下面的代码 我在map初始化的时候一直有一个错误
用map1["c"]=3; 和map1.insert(map<char,int,less<char> >::value_type("c",3));
都有错误出现 我是在VS2005下做的,请高人指导原因。


#include <iostream>
#include <map>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
map<char,int,less<char> > map1;
map<char,int,less<char> >::iterator mapIter;
//下面是初始化,
//也可以用map1.insert(map<char,int,less<char> >::value_type("c",3));
//map1.insert(pair<char,int>("c",3));

map1["c"]=3; //出错,错误error C2679: 二进制“[”: 没有找到接受“const char [2]”类型的右操作数的运算符(或没有可接受的转换)
map1["d"]=4; //同上
map1["a"]=1; //同上
map1["b"]=2; //同上
for(mapIter=map1.begin();mapIter!=map1.end();++mapIter)
cout<<" "<<(*mapIter).first<<": "<<(*mapIter).second;
//检索对应于d键的值是这样做的:
map<char,int,less<char> >::const_iterator ptr;
ptr=map1.find("d");
cout<<"\n"<<" "<<(*ptr).first<<" 键对应于值:"<<(*ptr).second;
//cin.get();

return 0;
}
...全文
507 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng4206yu 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 leez0301 的回复:]
开始定义的key类型为char
map <char,int,less <char> > map1;
初始化时的key却用成了字符串"c",相当于char*
map1["c"]=3; 和map1.insert(map <char,int,less <char> >::value_type("c",3));

将map <char,int,less <char> > map1;
改成map <char*,int,less <char> > map1;
或者将初始化的键值改成字符即可
map1['c']=3; 和map1.insert(map <char,int,less <char> >::value_type('c',3));
[/Quote]
up...
nullah 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lann64 的回复:]
C/C++ code#include <iostream>
#include <map>
using namespace std;

int main()
{
map<char,int,less<char> > map1;
map<char,int,less<char> >::iterator mapIter;
//下面是初始化,
//也可以用map1.insert(map<char,int,less<char> >::value_type("c",3));
//map1.insert(pair<char,int>("c",3));

map1['c']=3; //出错,错误error C2679: 二进制“[”: 没有找到接受“const char [2…
[/Quote]
up
map<char *,int,less<char> >
或者
'c'
xiaoyisnail 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lann64 的回复:]
C/C++ code#include<iostream>#include<map>usingnamespacestd;intmain()
{
map<char,int,less<char>>map1;
map<char,int,less<char>>::iterator mapIter;//下面是初始化,//也可以用map1.insert(map<char,int,less<char> >::value_type("c",3));//map1.insert(pair<char,int>("c",3));map1['c']=3;//出错,错误error C2679: 二进制“[”: 没有找到接受“const char [2]”类型的右操作数的运算符(或没有可接受的转换)map…
[/Quote]

up
字符是''
lightbear 2009-01-08
  • 打赏
  • 举报
回复
up
码上老登 2009-01-08
  • 打赏
  • 举报
回复
开始定义的key类型为char
map<char,int,less<char> > map1;
初始化时的key却用成了字符串"c",相当于char*
map1["c"]=3; 和map1.insert(map <char,int,less <char> >::value_type("c",3));

将map<char,int,less<char> > map1;
改成map<char*,int,less<char> > map1;
或者将初始化的键值改成字符即可
map1['c']=3; 和map1.insert(map <char,int,less <char> >::value_type('c',3));

waizqfor 2009-01-08
  • 打赏
  • 举报
回复
字符要用=='字符';
字符串== "字符串";
lann64 2009-01-08
  • 打赏
  • 举报
回复
#include <iostream>
#include <map>
using namespace std;

int main()
{
map<char,int,less<char> > map1;
map<char,int,less<char> >::iterator mapIter;
//下面是初始化,
//也可以用map1.insert(map<char,int,less<char> >::value_type("c",3));
//map1.insert(pair<char,int>("c",3));

map1['c']=3; //出错,错误error C2679: 二进制“[”: 没有找到接受“const char [2]”类型的右操作数的运算符(或没有可接受的转换)
map1['d']=4; //同上
map1['a']=1; //同上
map1['b']=2; //同上
for(mapIter=map1.begin();mapIter!=map1.end();++mapIter)
cout<<" "<<(*mapIter).first<<": "<<(*mapIter).second;
//检索对应于d键的值是这样做的:
map<char,int,less<char> >::const_iterator ptr;
ptr=map1.find('d');
cout<<"\n"<<" "<<(*ptr).first<<" 键对应于值:"<<(*ptr).second;
//cin.get();

return 0;
}
lann64 2009-01-08
  • 打赏
  • 举报
回复
“”是字符串,char应该用单引号

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧