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

链接提交百度站长平台电商网站需要哪些备案

链接提交百度站长平台,电商网站需要哪些备案,北京网页,威海百度seoC变长参数模板 C11 加入了新的表示方法: 允许任意个数、任意类别的模板参数#xff0c;同时也不需要在定义时将参数的个数固定。 templatetypename... Ts class Magic;模板类 Magic 的对象#xff0c;能够接受不受限制个数的 typename 作为模板的形式参数#xff…C变长参数模板 C11 加入了新的表示方法: 允许任意个数、任意类别的模板参数同时也不需要在定义时将参数的个数固定。 templatetypename... Ts class Magic;模板类 Magic 的对象能够接受不受限制个数的 typename 作为模板的形式参数例如下面的定义 class Magicint,std::vectorint,std::mapstd::string,std::vectorint darkMagic;既然是任意形式所以个数为 0 的模板参数也是可以的class Magic nothing;。 如果不希望产生的模板参数个数为 0可以手动的定义至少一个模板参数 templatetypename Require, typename... Args class Magic;变长参数模板也能被直接调整到到模板函数上。传统 C 中的 printf 函数 虽然也能达成不定个数的形参的调用但其并非类别安全。 而 C11 除了能定义类别安全的变长参数函数外 还可以使类似 printf 的函数能自然地处理非自带类别的对象。 除了在模板参数中能使用 ... 表示不定长模板参数外 函数参数也使用同样的表示法代表不定长参数 这也就为我们简单编写变长参数函数提供了便捷的手段例如 templatetypename... Args void printf(const std::string str, Args... args);那么我们定义了变长的模板参数如何对参数进行解包呢 首先我们可以使用 sizeof... 来计算参数的个数 templatetypename ...Ts void magic(Ts... args) {cout sizeof...(args) endl; }1. 递归模板函数 递归是非常容易想到的一种手段也是最经典的处理方法。这种方法不断递归地向函数传递模板参数进而达到递归遍历所有模板参数的目的 #include iostream templatetypename T0 void printf1(T0 value) {std::cout value std::endl; } templatetypename T, typename... Ts void printf1(T value, Ts... args) {std::cout value std::endl;printf1(args...); } int main() {printf1(1, 2, 123, 1.1);return 0; }2. 变参模板展开 你应该感受到了这很繁琐在 C17 中增加了变参模板展开的支持于是你可以在一个函数中完成 printf 的编写 templatetypename T0, typename... T void printf2(T0 t0, T... t) {std::cout t0 std::endl;if constexpr (sizeof...(t) 0) printf2(t...); }事实上有时候我们虽然使用了变参模板却不一定需要对参数做逐个遍历我们可以利用 std::bind 及完美转发等特性实现对函数和参数的绑定从而达到成功调用的目的。 3. 初始化列表展开 递归模板函数是一种标准的做法但缺点显而易见的在于必须定义一个终止递归的函数。 这里介绍一种使用初始化列表展开的黑魔法 templatetypename T, typename... Ts auto printf3(T value, Ts... args) {std::cout value std::endl;(void) std::initializer_listT{([args] {std::cout args std::endl;}(), value)...}; }在这个代码中额外使用了 C11 中提供的初始化列表以及 Lambda 表达式的特性下一节中将提到。 通过初始化列表(lambda 表达式, value)... 将会被展开。由于逗号表达式的出现首先会执行前面的 lambda 表达式完成参数的输出。 为了避免编译器警告我们可以将 std::initializer_list 显式的转为 void。 C 17 中将变长参数这种特性进一步带给了表达式考虑下面这个例子 #include iostream templatetypename ... T auto sum(T ... t) {return (t ...); } int main() {std::cout sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) std::endl; }非类型模板参数推导 前面我们主要提及的是模板参数的一种形式类型模板参数。 template typename T, typename Uauto add(T t, U u) { return tu;}其中模板的参数 T 和 U 为具体的类型。 但还有一种常见模板参数形式可以让不同字面量成为模板参数即非类型模板参数 template typename T, int BufSize class buffer_t { public:T alloc();void free(T item); private:T data[BufSize]; }buffer_tint, 100 buf; // 100 作为模板参数在这种模板参数形式下我们可以将 100 作为模板的参数进行传递。 在 C11 引入了类型推导这一特性后我们会很自然的问既然此处的模板参数 以具体的字面量进行传递能否让编译器辅助我们进行类型推导 通过使用占位符 auto 从而不再需要明确指明类型 幸运的是C17 引入了这一特性我们的确可以 auto 关键字让编译器辅助完成具体类型的推导 例如 template auto value void foo() {std::cout value std::endl;return; }int main() {foo10(); // value 被推导为 int 类型 }
http://www.huolong8.cn/news/124916/

相关文章:

  • 如何免费创建自己的网站平台布吉做网站
  • asp.net mvc 统计网站流量数据商城网站怎么建
  • 济宁做网站的电话织梦网站如何打通百度小程序
  • 山东平台网站建设价格公司做网站的流程
  • 58同城新密网站建设cn网站怎么做
  • 工程网站建设网站发布文章怎么才能让百度收录
  • 免费seo排名网站wordpress构架都是模板
  • 如何备案网站好网站的特点
  • 珠宝首饰网站建设遵义网站开发的公司有哪些
  • 建一个网站怎么赚钱济南it培训机构
  • 美食网站建设书建设网站的企业费用
  • 电脑网站建设策划书先做网站还是先做天猫
  • 开网店的流程及程序seo关键词排名公司
  • 登陆网站显示域名解析错误怎么办个人网站怎么做视频
  • 丹东网站seo装饰网站设计模板下载
  • html5网站最新招商代理项目
  • 怎么申请免费的网站用php做美食网站有哪些
  • 深圳企业网站制作公司介绍网站建设与维护试卷分析
  • 自己做网站还是开淘宝wordpress 中文版本
  • 小九自助建站企业年金办法
  • 网站简繁转换学校定制网站建设公司
  • 做网站需要买域名网页设计心得体会正文
  • 黄页网站大全全国100个最缺工职业
  • 虚拟主机可以做视频网站嘛安徽六安有什么特产
  • 延庆青岛网站建设广西网站建设哪家好
  • 深圳市建设工程交易中心网站雷神代刷网站推广快速
  • 无锡网站seo外包哈尔滨建设网站成本
  • 兰州网站建设推广河南省建设厅执业资格注册中心网站
  • 苏州市吴江区住房和城乡建设局网站标签系统做的好的网站
  • 哪里可以做足球网站株洲网站建设 公司