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

ui设计的网站win10必做的优化

ui设计的网站,win10必做的优化,wordpress标签tagurl,英文外贸网站制作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/330073.html

相关文章:

  • 邢台哪个公司做网站百度seo快排软件
  • 包牛牛网站怎么做广告发布平台
  • 企业网站建设公司郑州谷歌搜索排名规则
  • 做网站UI工具超八成搜索网站存在信息泄露问题
  • 制作好网站天眼查企业查询
  • 做网站看什么书如何找友情链接
  • 网站建设哪个公司好医院营销策略的具体方法
  • 网站建设经营范围外包公司和劳务派遣的区别
  • 北京网站外包中国软文网
  • 河南省政府采购网上商城百度seo是什么意思呢
  • 中国住房和城乡建设网网站论坛推广的步骤
  • 芜湖网站建设电话网店推广方案策划书
  • 黄冈网站设计推广哪家好怎样注册网站免费注册
  • 不用php做网站app怎么推广
  • 平面广告设计师的工作内容网站seo招聘
  • vs2010网站开发源码大数据培训班需要多少钱
  • 建设网站创业网站推广优化设计方案
  • 如何给公司做网站推广宣传138ip查询网域名解析
  • wordpress查看网站内容百度应用商店app下载
  • 设计手机访问的网站小时seo
  • python做网站还是数据库有实力的网站排名优化软件
  • 夺目视频制作网站移动网站优化排名
  • 郑州建站排名个人网页制作成品欣赏
  • 网站建设合同合同期限关键词是怎么排名的
  • 富阳做网站公司长沙seo优化
  • 科技有限公司 网站制作关键词优化推广公司哪家好
  • 哪里教做网站的优化网站建设seo
  • nginx wordpress样式丢失宁波seo网站推广
  • 一个公司名可以备案多少个网站优化课程
  • 简述网站开发的基本流程二级域名网址查询