首页
社区
课程
招聘
[求助]C++类模板问题
发表于: 2018-9-3 23:28 2992

[求助]C++类模板问题

2018-9-3 23:28
2992
请教如何把以下两个方法合并成一个?

这两个函数实现完全一样, 可以使用C++14标准, 谢谢.

	template<typename T>
	ostream& ostream::operator << (ostream& os, const std::set<T>& v);

	template<typename T>
	ostream& ostream::operator << (ostream& os, const std::list<T>& v);


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 217
活跃值: (134)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
std::is_same
2018-9-3 23:48
0
雪    币: 2161
活跃值: (750)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
扫地sodi std::is_same
我试了, 但写法上有问题,  有例子吗?
2018-9-4 00:16
0
雪    币: 1215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
  
最后于 2018-9-4 01:19 被wx_叛逆的鲁鲁修编辑 ,原因:
2018-9-4 00:39
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
template<class _It>
ostream& cout_iterator(ostream& os, _It _b, _It _e)
{
       for (; _b != _e; ++_b)
       {
               os << *_b;
       }
       return os;
}

template<typename T>
ostream& operator << (ostream& os, const std::set<T>& v){
       return  cout_iterator (os, begin(v), end(v));
}

template<typename T>
ostream& operator << (ostream& os, const std::list<T>& v){
       return  cout_iterator (os, begin(v), end(v));
}

最后于 2018-9-4 10:17 被yezhulove编辑 ,原因:
2018-9-4 10:09
0
雪    币: 2161
活跃值: (750)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
yezhulove template&lt;class&nbsp;_It&gt; ostream&amp;&nbsp;cout_iterator(ostream&amp; ...
感谢, 例子我没有测试, 因为这与我的目的不符, 我希望的是相似容器使用同一份模板实现.
2018-9-4 10:19
0
雪    币: 2161
活跃值: (750)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
这样应该可以了, 搭配std::enable_if即可, 感谢楼上各位的帮助

template<template<typename...> typename T, typename... V>
std::ostream& foo(std::ostream& os, T<V...> &v)
{
	std::size_t sz = v.size();

	foo(os, sz);
	for (auto i = std::begin(v); i != std::end(v); ++i)
	{
		foo(os, *i);
	}

	return os;
}

支持处理set/list/deque/vector等容器类型

2018-9-4 11:19
0
游客
登录 | 注册 方可回帖
返回
//