| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3092 人关注过本帖
标题:pair 初始化一问?
只看楼主 加入收藏
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
结帖率:0
收藏
 问题点数:0 回复次数:4 
pair 初始化一问?
pair<int,int> p1 (1,2); //ok
pair<int,int> p2 = (1,2); //error

问题如上,第一个显然是对的;问题是第二个为什么编译通不过呢?
请高手给个详细解释……

[[it] 本帖最后由 blueboy82006 于 2008-8-12 23:03 编辑 [/it]]
搜索更多相关主题的帖子: pair 编译 解释 
2008-08-12 20:53
elegant87
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-1-15
收藏
得分:0 
LZ没有搞错吧!没有错误呀!
看看这个程序吧!
#include<iostream>
#include<utility>
using namespace std;

int main()
{
    pair<int,int> p1(1,2);
    pair<int,int> p2(1,2);
    cout<<p1.first<<"\t"<<p1.second<<endl;
    cout<<p2.first<<"\t"<<p2.second<<endl;
    system("pause");
    return 0;
}
2008-08-12 21:32
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
回复 2# elegant87 的帖子
哦,不好意思啊,写漏了个等号
现在,如上……

2008-08-12 23:05
zerocn
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-4-11
收藏
得分:0 
[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类型并返回
2008-08-13 11:57
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
学习了。。。谢谢了。。。

2008-08-13 12:50
快速回复:pair 初始化一问?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.056862 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved