当前位置: 首页 > wzjs >正文

ui设计的网站网站优化关键词排名公司

ui设计的网站,网站优化关键词排名公司,北京网站开发公司飞沐,广州城市建设档案馆网站C 遍历可变参数的几种方法一、第一种遍历方式二、 获取可变参数的长度三、递归遍历可变参数四、可变参数求和先写一个最简单的可变参数函数 template<typename ...T> void TestFunc(T&...Param) {}我们应该如何遍历传入的可变参数呢&#xff1f; 介绍如下几种遍历方…

C++ 遍历可变参数的几种方法

  • 一、第一种遍历方式
  • 二、 获取可变参数的长度
  • 三、递归遍历可变参数
  • 四、可变参数求和


先写一个最简单的可变参数函数

template<typename ...T>
void TestFunc(T&...Param)
{}

我们应该如何遍历传入的可变参数呢?
介绍如下几种遍历方式

一、第一种遍历方式

  • (PrintValue1(Param), 0) 是一个逗号表达式。逗号表达式会依次执行其前后的表达式,并返回最后一个表达式的值。这里先调用PrintValue1(Param)打印参数,然后返回整数0作为整个逗号表达式的结果。
  • 后面的…表示将逗号表达式按照参数包Param展开。假设有三个参数,则展开为:
    int arr[] = { (PrintValue1(Param1), 0), (PrintValue1(Param2), 0), (PrintValue1(Param3), 0) };
  • 这样,数组arr的元素就是三个0(即{0,0,0}),但在这个过程里,每个参数都被PrintValue1打印了一次。
template<typename T>
void PrintValue1(T& Value)
{std::cout << Value << std::endl;
}template<typename ...T>
void TestFunc(T&...Param)
{int arr[] = { (PrintValue1(Param), 0)... };
}

也可以换一种方式书写

template<typename T>
int PrintValue2(T& Value)
{return Value;
}template<typename ...T>
void TestFunc(T&...Param)
{int arr[] = { PrintValue2(Param)... };for (size_t i = 0; i < sizeof(arr) / sizeof(int); i++){std::cout << arr[i] << std::endl;}
}

二、 获取可变参数的长度

没什么好说的固定写法而已

template<typename ...T>
void TestFunc(T&...Param)
{int num = sizeof...(Param);std::cout << num << std::endl;
}

三、递归遍历可变参数

运用函数参数的特性,实现递归,注意递归到最后一个值时需要加上对应的函数去调用不然会报错

template<typename T>
void TestFunc(T& Value)
{std::cout << "Run1" << std::endl;std::cout << Value << std::endl;
}template<typename T,typename ...ParamValue>
void TestFunc(T& Head, ParamValue& ...Param)
{std::cout << "Run2" << std::endl;std::cout << Head << std::endl;TestFunc(Param...);
}

调用

int main()
{int value1 = 1;int value2 = 2;int value3 = 3;int value4 = 4;int value5 = 5;TestFunc(value1, value2, value3, value4, value5);system("pause");return 0;
}

输出
在这里插入图片描述

四、可变参数求和

算是上面递归遍历的一个使用案例

template<typename ParamTypes>
ParamTypes& TestFunc(ParamTypes& Param)
{std::cout << "Run 1" << std::endl;return Param;
}template<class T,typename ... ParamTypes>
T TestFunc(T& Head, ParamTypes &...Param)
{std::cout << "Run 2" << std::endl;return Head + TestFunc<T>(Param...);
}

调用

int main()
{int value1 = 1;int value2 = 2;int value3 = 3;int value4 = 4;int value5 = 5;int value = TestFunc(value1, value2, value3, value4, value5);std::cout << value << std::endl;system("pause");return 0;
}

输出
在这里插入图片描述

http://www.dtcms.com/wzjs/20457.html

相关文章:

  • 建设网站的可行性分析网站top排行榜
  • 建设工程施工合同(示范文本)seo点击工具
  • 软件开发的主要任务是宁波seo推广推荐
  • wordpress添加全屏海报百度seo搜索引擎优化
  • 西宁网站建设公司排行大连百度关键词排名
  • 哪家网站推广好百度非企推广开户
  • wordpress 两个搜索框seo营销优化
  • 做企业网站找谁百度怎么推广广告
  • 网站推广经理招聘北京优化互联网公司
  • 旅游网站建设方法的探讨网络营销人员招聘
  • 建设网站有什么好处班级优化大师的优点
  • 网站备案查询 工信部网站关键词优化软件效果
  • 运城做网站哪家好竞价排名的弊端
  • 更换网站首页模板怎么做新产品推广方案范文
  • 临沂网站制作哪家靠谱中国没有限制的搜索引擎
  • 好的网站建站公司seo网站推广优化论文
  • 建设执业注册中心网站线下推广怎么做
  • 宁德市城乡住房建设厅网站可以发布推广引流的悬赏平台
  • 顺义住房和城乡建设委员会网站关停网络营销模式包括哪些
  • 小学学校网站建设方案沈阳网络优化培训
  • 龙华新区做网站武汉关键词排名提升
  • 常设中国建设工程法律网站企业网站优化解决方案
  • ftp链接网站空间企业网站网页设计
  • 做网站申请完域名后做什么seo求职
  • 正规的佛山网站建设价格零基础seo入门教学
  • 宁波网页网站制作seo网站排名优化案例
  • 做网站卖菜刀需要什么手续seo排名赚app靠谱吗
  • wordpress破解密码安徽360优化
  • wordpress app 读者关键词首页排名优化
  • 移动端关键词排名如何优化广州seo关键词