首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

[陶大妈醒目][c++11] 类似泛型 for_each 算法的 variadic template 实现,该如何解决

2012-06-19 
[陶大妈醒目][c++11] 类似泛型 for_each 算法的 variadic template 实现经常遇到多个类似算法,但是参数数

[陶大妈醒目][c++11] 类似泛型 for_each 算法的 variadic template 实现
经常遇到多个类似算法,但是参数数量不一样的,我都是直接 overload 掉了
比如 for_each

C/C++ code
    template<typename II1, typename F>    F for_each( II1 _ii1, II1 ii1_, F f )    {        while ( _ii1 != ii1_ )        { f( *_ii1++ ); }        return f;    }    template<typename II1, typename II2, typename F>    F for_each( II1 _ii1, II1 ii1_, II2 _ii2, F f )    {        while ( _ii1 != ii1_ )        { f( *_ii1++, *_ii2++ ); }        return f;    }    template<typename II1, typename II2, typename II3, typename F>    F for_each( II1 _ii1, II1 ii1_, II2 _ii2, II3 _ii3, F f )    {        while ( _ii1 != ii1_ )        { f( *_ii1++, *_ii2++, *_ii3++ ); }        return f;    }    template<typename II1, typename II2, typename II3, typename II4, typename F>    F for_each( II1 _ii1, II1 ii1_, II2 _ii2, II3 _ii3, II4 _ii4, F f )    {        while ( _ii1 != ii1_ )        { f( *_ii1++, *_ii2++, *_ii3++, *_ii4++ ); }        return f;    }


现在问题是,是否存在一种方法,使用 Variadic Templates 技术使得 for_each 直接接受 N 个参数而不用写出多个重载?

比如这种形式
C/C++ code
    template<typename II1, typename... IIN, typename F>    F for_each( II1 _ii1, II1 ii1_, IIN... _iin, F f );

尝试了几次没有成功,主要难点在 *_iin 的展开递归上,不知各位有何高见?



[解决办法]
我是来学习的。对于C++0X11你们是从哪里学来的?有什么教程推荐下么??

热点排行