为什么错了??
#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 );//这句为什么错了?
} 展开
#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 );//这句为什么错了?
} 展开
3个回答
展开全部
因为 map 的键 是一个const ,就是说 只能初始化的时候赋值
后面对他的赋值语句编译器认定都是非法的。
如果你要改的话 就该这里map <int, int> :: value_type value1cInt2Int ( 4, 40 );
因为实际上你已经创建并初试化了一个空的value1(0,0) 试图更改键的操作都是错误的
就好象
//const int x();
//x=1;
//错误的;
一样
你为何要对它赋值?
如果要创建,就创建一个pair<int,int>好了,再insert进map
类型都是完全一样的!
只是map直接就把第一个键限定了。
后面对他的赋值语句编译器认定都是非法的。
如果你要改的话 就该这里map <int, int> :: value_type value1cInt2Int ( 4, 40 );
因为实际上你已经创建并初试化了一个空的value1(0,0) 试图更改键的操作都是错误的
就好象
//const int x();
//x=1;
//错误的;
一样
你为何要对它赋值?
如果要创建,就创建一个pair<int,int>好了,再insert进map
类型都是完全一样的!
只是map直接就把第一个键限定了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
发现错了,停止就是进步
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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 除了初始化怎么赋值的
#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 除了初始化怎么赋值的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询