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

长春网站建设新格网站文档设置index.php

长春网站建设新格,网站文档设置index.php,哪个网站做视频赚钱,上海包装设计策略技术中的算法策略 在之前博客中funcsum()函数模板中#xff0c;实现了对数组元素的求和运算。求和在这里可以看作一种算法#xff0c;扩展一下思路#xff0c;对数组元素求差、求乘积、求最大值和最小值等#xff0c;都可以看作算法。而当前的funcsum()函数模板中实现了对数组元素的求和运算。求和在这里可以看作一种算法扩展一下思路对数组元素求差、求乘积、求最大值和最小值等都可以看作算法。而当前的funcsum()函数模板中已经将数组元素的求和算法固定写在了程序代码中为了灵活地将求和算法调整为求乘积、求最大值等算法可以通过引入一个策略policy类SumPolicy达到目的。 // 求和策略类以实现求和算法 struct SumPolicy {// 静态成员函数模板templatetypename sumT,typename T // sumT是和值类型T是数组元素类型static void algorithm(sumT sum, const T value) // 该策略类的核心算法{sum value;} };接着为funcsum()函数模板增加一个新的类型模板参数这个模板参数的默认值就是这个策略类。 修改funcsum()函数模板 templatetypename T,typename U SumFixedTraitsT,typename V SumPolicy auto funcsum(const T* begin, const T* end) {typename U::sumT sum U::initValue();for (;;){// sum (*begin); 此行被下面一行取代V::algorithm(sum, *begin);if (begin end)break;begin;}return sum; }如果要计算一个整型数组中元素的最小值如何实现第1件想到的事情就是写一个新的策略类如这里写一个MinPolicy类仿照SumPolicy类的写法。 struct MinPolicy {templatetypename minT,typename Tstatic void algorithm(minT min, const T value){if (min value)min value;} };在main()主函数中重新写入代码 #include killCmake.h#includestringusing namespace std;templatetypename T struct SumFixedTraits;template struct SumFixedTraitschar {using sumT int;static sumT initValue() {return 0;} };// 最求值策略技术时为了求最小值初始化需要很大 // 所以初始值可以为int最大值21亿 template struct SumFixedTraitsint {using sumT __int64;static sumT initValue() {return 2100000000;} };template struct SumFixedTraitsdouble {using sumT double;static sumT initValue() {return 0.0;} };templatetypename T,typename U SumFixedTraitsT auto funcsum(const T* begin, const T* end) {// using sumT typename SumFixedTraitsT::sumT; 本行不需要// sumT sum SumFixedTraitsT::initValue(); 本行不需要typename U::sumT sum U::initValue();for (;;){sum (*begin);if (begin end)break;begin;}return sum; }// 求和策略类以实现求和算法 struct SumPolicy {// 静态成员函数模板templatetypename sumT,typename T // sumT是和值类型T是数组元素类型static void algorithm(sumT sum, const T value) // 该策略类的核心算法{sum value;} };templatetypename T,typename U SumFixedTraitsT,typename V SumPolicy auto funcsum(const T* begin, const T* end) {typename U::sumT sum U::initValue();for (;;){// sum (*begin); 此行被下面一行取代V::algorithm(sum, *begin);if (begin end)break;begin;}return sum; }struct MinPolicy {templatetypename minT,typename Tstatic void algorithm(minT min, const T value){if (min value)min value;} };int main() {//char my_char_array[] abc;//std::cout (int)(funcsum(my_char_array[0], my_char_array[2])) std::endl;//std::cout (int)(funcsumchar, SumFixedTraitsint(my_char_array[0], my_char_array[2])) std::endl;int my_int_array1[] { 10,15,20 };std::cout funcsumint, SumFixedTraitsint, MinPolicy(my_int_array1[0], my_int_array1[2]) std::endl;return 0; } 这个程序真的很经典个人觉得应该属于中上乘武功了 运行程序看一看新增的代码结果是否正确最开始发现结果为0显然这个结果是不正确的。究其原因在funcsum()中sum用于保存数组元素最小值的变量的初值被设置为0。如果是计算数组元素和值则sum的初值被设置为0是很正常的但如果要计算数组元素的最小值则把sum的初值设置为0是不正常的因为数组中元素的最小值也很可能比0大有这个0存在就无法找到数组中元素的真正最小值。解决方案有以下两个。1可以给funcsum()函数模板增加一个非类型模板参数用于把初值传递进来。2也可以重新写一个固定萃取类模板取代当前的SumFixedTraits模板。这里采用后一种解决方案书写一个新的固定萃取类模板取名为MinFixedTraits。 #include killCmake.h#includestringusing namespace std;templatetypename T struct SumFixedTraits;template struct SumFixedTraitschar {using sumT int;static sumT initValue() {return 0;} };// 最求值策略技术时为了求最小值初始化需要很大 // 所以初始值可以为int最大值21亿 template struct SumFixedTraitsint {using sumT __int64;static sumT initValue() {return 2100000000;} };template struct SumFixedTraitsdouble {using sumT double;static sumT initValue() {return 0.0;} };templatetypename T struct MinFixedTraits;template struct MinFixedTraitsint {// 求最小值结果类型与元素类型相同即可// 为名字统一都用sumT这个名字using sumT int;static sumT initValue(){// 这里给整型最大值相信任何一个数组元素都不会比这个值更大// 因此可以顺利找到数组元素中的最小值return INT_MAX;} };// 求和策略类以实现求和算法 struct SumPolicy {// 静态成员函数模板templatetypename sumT,typename T // sumT是和值类型T是数组元素类型static void algorithm(sumT sum, const T value) // 该策略类的核心算法{sum value;} };templatetypename T,typename U SumFixedTraitsT,typename V SumPolicy auto funcsum(const T* begin, const T* end) {typename U::sumT sum U::initValue();for (;;){// sum (*begin); 此行被下面一行取代V::algorithm(sum, *begin);if (begin end)break;begin;}return sum; }struct MinPolicy {templatetypename minT,typename Tstatic void algorithm(minT min, const T value){if (min value)min value;} };int main() {int my_int_array1[] { 10,15,20 };std::cout funcsumint, MinFixedTraitsint, MinPolicy( my_int_array1[0], my_int_array1[2]) std::endl;return 0; } 运行程序新增的代码行结果为10一切正常。
http://www.pierceye.com/news/155197/

相关文章:

  • 360网站安全检测自己买个服务器做网站
  • 临汾市网站建设网站版式分类
  • 广东的一起(17)做网站东莞建工集团企业网站
  • 最佳外贸英文网站模板六安网站设计公司
  • 为啥网站打开速度慢备案域名怎么弄
  • 门户网站建设主要内容深圳网站有哪些
  • 最好看的免费网站源码龙泉驿最新消息
  • 百度建立网站需要花多少钱学校门户网站建设工作
  • 网站安全防护方案沈阳网站建设策划方案
  • php做网站需要啥技术网站每年空间域名费用及维护费
  • 商城网站建设报个人免费网站
  • 公司网站开发建设wordpress首页加图片
  • 个人网站怎么写建设工程网站广州
  • 东阿网站制作如何在国外网站做推广
  • 宣城公司做网站潍坊市住房和城乡建设局网站
  • 用自己服务器做网站用备案wordpress弹窗订阅
  • 配色相关网站省住房城乡建设厅网站
  • 做汽车配件出口用什么网站好些求百度关键词搜索网站
  • 做网站到八方资源网怎么样公司网站首页如何做
  • 东莞政务网站建设方案wordpress三栏博客主题
  • 艺友网站建设网站需要的栏目
  • 教育类网站 前置审批重庆网站建设首选卓光
  • 宁波做网站哪家好个人做论坛网站怎么做
  • 公司网站建设北京电子设计工程期刊
  • 网站前端建设都需要什么c 网站开发案例详解
  • 无锡网站无忧网站建设
  • 最火高端网站设计厂家宁波新亚建设内部网站
  • 娱乐网站建设宁波网站建设多少钱一年
  • app制作器手机版下载网站关键词优化排名怎么做
  • 网站站外优化推广方式网站建设网站需要什么软件有哪些