BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #68312同步于 2013/3/10
CPP机器人发帖

[合集] [问题]如何打印pair【更新问题2】

gsl2011
2013/3/10镜像同步0 回复
☆─────────────────────────────────────☆ 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,多谢。 : 呵呵,不好意思哈,你可以直接问的~ 不过自己查肯定会记得更清楚的~
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。