返回信息流☆─────────────────────────────────────☆
wangkendy (【Yumi团】) 于 (Wed Dec 12 17:51:05 2012) 提到:
想写一个打印pair的函数模板,以下代码编译都过不去!请问该怎么改?
#include <iostream>
using namespace std;
template<typename Pair>
ostream& operator<<(ostream& os, const Pair& p) {
return os << p.first << ":" << p.second << endl;
}
int main()
{
pair<int,int> pii(12, 34);
pair<int,float> pif(12, 34.56);
cout << pii << endl;
cout << pif << endl;
return 0;
}
感谢两位的解答@iFadeToBlack @gsl2011
问题2:如果想要用copy()输出,该如何写输出的模板函数。
map<int, int> mii;
mii.insert(make_pair(12, 34));
mii.insert(make_pair(23, 56));
//...
copy(mii.begin(), mii.end(), ostream_iterator<pair<int,int> >(cout, "\n"));
☆─────────────────────────────────────☆
iFadeToBlack (烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫*&^) 于 (Wed Dec 12 19:12:44 2012) 提到:
template <typename T, typename U>
ostream& operator<<(ostream& os, const pair<T, U>& pair)
{...}
☆─────────────────────────────────────☆
gsl2011 (longGG) 于 (Wed Dec 12 19:15:11 2012) 提到:
namespace std
{
template<class T1,class T2>
ostream& operator<<(ostream &os,const pair<T1,T2> &p)
{
os<<p.first<<":"<<p.second<<endl;
return os;
}
}
☆─────────────────────────────────────☆
gsl2011 (longGG) 于 (Wed Dec 12 20:54:40 2012) 提到:
我给你的代码就成吧
☆─────────────────────────────────────☆
iFadeToBlack (烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫*&^) 于 (Tue Dec 18 22:57:44 2012) 提到:
我觉得lz先找本模板的书看看比较好
(好吧,其实是我没看懂你想写什么)
☆─────────────────────────────────────☆
fuxiang90 (雨翔) 于 (Wed Dec 19 12:55:19 2012) 提到:
2 楼即可
☆─────────────────────────────────────☆
guoguoshuai (郭郭甩) 于 (Fri Jan 4 18:28:53 2013) 提到:
能给解释一下为什么一定要加namespace std吗?多谢。
【 在 gsl2011 的大作中提到: 】
: namespace std
: {
: template<class T1,class T2>
: ...................
☆─────────────────────────────────────☆
gsl2011 (longGG) 于 (Fri Jan 4 19:59:01 2013) 提到:
【 在 guoguoshuai 的大作中提到: 】
: 能给解释一下为什么一定要加namespace std吗?多谢。
:
由于其受限于ADL,查找到std为止。
其实在std中重载operator并不是好的办法,可以通过定义MyType、transform、for_each等多种方法解决。
☆─────────────────────────────────────☆
guoguoshuai (郭郭甩) 于 (Sat Jan 5 11:23:20 2013) 提到:
在网上查了半天,又看了Thinking in c++,终于明白了ADL,多谢。
【 在 gsl2011 的大作中提到: 】
: 由于其受限于ADL,查找到std为止。
: 其实在std中重载operator并不是好的办法,可以通过定义MyType、transform、for_each等多种方法解决。
☆─────────────────────────────────────☆
gsl2011 (longGG) 于 (Sat Jan 5 15:04:36 2013) 提到:
【 在 guoguoshuai 的大作中提到: 】
: 在网上查了半天,又看了Thinking in c++,终于明白了ADL,多谢。
:
呵呵,不好意思哈,你可以直接问的~ 不过自己查肯定会记得更清楚的~
这是一条镜像帖。来源:北邮人论坛 / cpp / #68312同步于 2013/3/10
CPP机器人发帖
[合集] [问题]如何打印pair【更新问题2】
gsl2011
2013/3/10镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。