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

免费网页在线代理服务刷关键词排名seo软件

免费网页在线代理服务,刷关键词排名seo软件,个人网站设计模版html,洛阳西工区做网站哪家好C 折叠表达式(Fold Expression)是在 C17 引入的一种语法,用于简化与可变参数模板的操作。折叠表达式的作用是对参数包(parameter pack)进行递归处理。 折叠表达式有四种类型: 一元左折叠 (Unary Left Fol…

C++ 折叠表达式(Fold Expression)是在 C++17 引入的一种语法,用于简化与可变参数模板的操作。折叠表达式的作用是对参数包(parameter pack)进行递归处理。

折叠表达式有四种类型:

  • 一元左折叠 (Unary Left Fold):
(... op pack)

这会从左向右地将操作符 op 应用于参数包中的元素。

例子:

template<typename... Args>
auto sum(Args... args) {return (... + args);  // 左折叠:((arg1 + arg2) + arg3) + ...
}
  • 一元右折叠 (Unary Right Fold):
(pack op ...)

这会从右向左地将操作符 op 应用于参数包中的元素。

例子:

template<typename... Args>
auto sum(Args... args) {return (args + ...);  // 右折叠:arg1 + (arg2 + (arg3 + ...))
}
  • 二元左折叠 (Binary Left Fold):
(init op ... op pack)

在左折叠的基础上增加一个初始值 init。折叠从左至右,并将 init 作为第一个操作数。

例子:

template<typename... Args>
auto sum(Args... args) {return (0 + ... + args);  // 左折叠,初始值为 0
}
  • 二元右折叠 (Binary Right Fold):

这与二元右折叠类似,只不过 init 是最后一个操作数,折叠从右至左。

例子:

template<typename... Args>
auto sum(Args... args) {return (args + ... + 0);  // 右折叠,初始值为 0
}

常见的应用场景

  • 参数包的求和、乘积。
  • 参数包中元素的逻辑与/或操作。
  • 结合可变参数模板,简化递归调用的代码。

应用示例对比:

#include <iostream>#方法1 输出函数不定方法
template< typename Last >
void log(Last param) {std::cout << "Output last param:"<< param << std::endl;
}template< typename First, typename... Paramlist >
void log(First v, Paramlist... args) {std::cout << "Traversal param:"<< v << std::endl;log(args...);
}#方法2 输出函数不定方法template<typename T, typename... Ts>
auto printf3(T value, Ts... args) {std::cout <<"printf3:" << value << std::endl;(void) std::initializer_list<T> {//(... op pack)//这是一个lambda 表达式,通过 [] 捕获 args,并对每个 args 执行输出操作://value... 展开参数包,将 args... 中的每一个元素都以 lambda 表达式的形式传递,并展开执行。每个 args 被捕获到 lambda 中,展开后生成多个语句。相当于: //std::cout << args1 << std::endl;//std::cout << args2 << std::endl; ...([&args] { std::cout << "Paramlist list:"<<args << std::endl;}(), value) ......};
}
//方法3 输出不定参数
template<typename ... T>
auto sum(T ... t) {return (0 + ... + t);//(t + ...) 是左折,表达式会依次进行累加操作,像这样展开(((t1 + t2) + t3) + t4) + ... ,
// 这样即使参数包为空,也返回初始值 0}int main() {log("Hi", "test", 123, 1.1);printf3("first", "second", 3, 4.4);std::cout << sum(1, 2, 3, 4, 5.1) << std::endl;return 0;
}
~          

通过折叠表达式,可以避免手动展开参数包的递归调用,简化代码编写,提升可读性。

http://www.hkea.cn/news/732415/

相关文章:

  • 网上可以自学什么技术win7系统优化软件
  • 嘉兴建站软件如何做好企业网站的推广
  • 在凡科做网站短视频推广
  • 深圳推广公司推荐q群排名优化软件
  • 什么网站做简历模板宁德市医院
  • 用什么软件做公司网站游戏推广赚佣金的平台
  • 购物网站 后台模板河北seo技术培训
  • 聊城建设委员会官方网站google seo
  • 广西建设网郭业棚seo推广具体做什么
  • 武汉网站seo诊断谷歌下载官网
  • 做地方网站能赚钱吗免费seo网站诊断
  • 图片设计在线网站推广优化外包便宜
  • 武汉平价做网站网络软文推广案例
  • 新产品线上推广方案鞍山seo外包
  • 网站建网站建设和优佛山网络推广培训
  • 毕业设计做网站怎么样微信crm管理系统
  • 个人网站开发多少钱电脑培训班零基础
  • 互联网有哪些岗位宁波免费seo在线优化
  • 惠州做棋牌网站建设哪家技术好哪里的网络推广培训好
  • 如何做线上赌博的网站推广策略有哪些方法
  • 男的女的做那个视频网站百度收录需要多久
  • 大通县wap网站建设公司网站免费制作
  • 哪个网站教做公众号甘肃百度推广电话
  • 网站怎么让百度收录广告网络推广
  • 小型网站设计及建设论文定制网站制作公司
  • 视频网站建设费用排名优化网站seo排名
  • 怎么自己做网站服务器linux百度账号查询
  • 梧州网站推广方案百度热搜 百度指数
  • 网站不兼容ie6自助建站模板
  • 甘肃网站建设公司百中搜优化软件