为什么错了??

#include<map>#include<iostream>intmain(){usingnamespacestd;typedefpair<constint,int>c... #include <map>
#include <iostream>

int main( )
{
using namespace std;
typedef pair <const int, int> cInt2Int;
map <int, int> m1;

map <int, int> :: value_type value1;
//map <int, int> :: iterator pIter;

value1 = cInt2Int ( 4, 40 );//这句为什么错了?

}
展开
 我来答
牛比的琭琭
2009-01-21 · TA获得超过685个赞
知道小有建树答主
回答量:588
采纳率:0%
帮助的人:428万
展开全部
因为 map 的键 是一个const ,就是说 只能初始化的时候赋值
后面对他的赋值语句编译器认定都是非法的。

如果你要改的话 就该这里map <int, int> :: value_type value1cInt2Int ( 4, 40 );

因为实际上你已经创建并初试化了一个空的value1(0,0) 试图更改键的操作都是错误的

就好象
//const int x();
//x=1;
//错误的;
一样

你为何要对它赋值?
如果要创建,就创建一个pair<int,int>好了,再insert进map
类型都是完全一样的!
只是map直接就把第一个键限定了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
徘忧阁
2020-02-19 · 愿世界少一点浮躁......
个人认证用户
徘忧阁
采纳数:487 获赞数:25905

向TA提问 私信TA
展开全部

发现错了,停止就是进步

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
firnice
2009-01-21 · TA获得超过379个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:395万
展开全部
#include <map>
#include <iostream>

int main( )
{
using namespace std;
typedef pair <const int, int> cInt2Int;
map <int, int> m1;

map <int, int> :: value_type value1(cInt2Int( 4, 40 ));//我的修改
//map <int, int> :: iterator pIter;

//value1 = cInt2Int ( 4, 40 );//这句为什么错了?
return 1;
}

我不知道map <int, int> :: value_type 除了初始化怎么赋值的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式