[bo][un]blueboy82006[/un] 在 2008-8-12 23:05 的发言:[/bo]
哦,不好意思啊,写漏了个等号
现在,如上……
LZ的问题出现在赋值和初始化分不不清。
pair<int,int> p1(1,2);//这里是定义了一个pair对象,并且使用(1,2)参数调用两个参数的构造函数进行初始化
pair<int,int> p2 = (1,2); //这里先定义了一个pair对象,并且使用默认构造函数进行初始化,随后LZ欲给p2对象进行赋值,但是等号右边的是什么类型?分析以下,(1,2),首先是1(int类型),然后是等号运算符,之后是2。所以,表达式的值是一个为Int型值为2。和p2(pair类型)类型不同,且无法进行转换,因此出错。
pair<int,int> p2=make_pair(1,2);//这样就可以了
make_pair函数是把两个参数的转换为pair类型并返回