能力值:
( LV3,RANK:20 )
|
-
-
2 楼
std::is_same
|
能力值:
( LV7,RANK:100 )
|
-
-
3 楼
扫地sodi
std::is_same
我试了, 但写法上有问题, 有例子吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
最后于 2018-9-4 01:19
被wx_叛逆的鲁鲁修编辑
,原因:
|
能力值:
( 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编辑
,原因:
|
能力值:
( LV7,RANK:100 )
|
-
-
6 楼
yezhulove
template<class _It>
ostream& cout_iterator(ostream& ...
感谢, 例子我没有测试, 因为这与我的目的不符, 我希望的是相似容器使用同一份模板实现.
|
能力值:
( 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等容器类型
|
|
|