日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

fixed trait

發布時間:2023/12/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fixed trait 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要求:編寫一個能適合許多類型的模板來完成一個累加操作

解答1:

//定義一個模板函數 #ifndef ACCUM_H #define ACCUM_H template<typename T> inline T accum(T const* beg,T const* end) {T total=T();//假設T()事實上會產生一個等于0的值while(beg != end){total += *beg;++beg;}return total; } #endif

?


解析:上面的代碼,有兩個問題:
(1)如何正確生成一個0值,以便開展我們的求和過程。
(2)如何確保T類型相加的和不會溢出。
比如:
我們在下面的源文件中調用上述代碼:

#include"accum0.h" #include<iostream>int main() {int num[] = {1,2,3,4,5};char name[] = "templates";int length = sizeof(name)-1;std::cout << "The average value of the integer values is :"<< accum(&num[0],&num[5])/5 << std::endl;std::cout << "The average value of the characters in \" "<< name << "\" is: "<< accum(&name[0],&name[length])/length<< std::endl;return 0; }

?


代碼產生的結果為:
The average value of the integer values is :3
The average value of the characters in “templates” is :-5

我們發現當我們使用字符char類型的時候,就發生了求和溢出的現象。
顯然,我們可以通過引入一個額外的模板參數AccT來解決這個問題,其中
AccT描述了變量total的類型,然而這樣會給該模板的使用者都強加了一個
額外的負擔,他們每次在調用這個模板的時候,都要指定這個額外的類型,
我們每次不得不這樣來寫:
accum<int>(&nume[0],&name[length])
雖說這個約束不是很麻煩,但是我們仍然希望避免這個約束。

此時,我們引入trait模板,其中定義的是和類型T的一些關聯特征。

//accumtraits2.h template<typename T> class AccumulationTraits;template<> class AccumulationTraits<char>{ public:typedef int AccT; };template<> class AccumulationTraits<short>{ public:typedef int AccT; };template<> class AccumulationTraits<int>{ public:typedef long AccT; };template<> class AccumulationTraits<unsigned int>{ public:typedef unsigned long AccT; };template<> class AccumulationTraits<float>{ public:typedef double AccT; };

?


在上面的代碼中,模板AccumulationTraits被稱為一個trait模板,因為
它含有它的參數類型的一個trait。
現在,我們可以改寫前面寫的accum()模板了:

//accum2.h #ifndef ACCUM_H #define ACCUM_H#include "accumtraits2.h" template<typename T> inline typename AccumulationTraits<T>::AccT accum(T const* beg,T const* end) {typedef AccumulationTraits<T>::AccT AccT;AccT total = AccT();while(beg != end){total += *beg;++beg;}return total; } #endif

?


現在我們運行前面的程序,就會出現我們期望的結果:
The average value of the integer values is :3
The average value of the characters in “templates” is :108

轉載于:https://www.cnblogs.com/magic-cube/archive/2011/11/02/2232347.html

總結

以上是生活随笔為你收集整理的fixed trait的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www在线视频 | 在线香蕉 | 亚洲国产精品无码观看久久 | 黄色电影在线视频 | www.jizzjizz| 亚洲精品2 | 欧美精品久久久久久久久老牛影院 | 精品人妻视频在线 | 人人av在线 | 欧美特黄一级大片 | 伊人精品国产 | 免费在线观看污 | 国产美女免费 | 欧美老肥婆性猛交视频 | 日韩av成人在线 | 一级空姐毛片 | 天天操夜夜摸 | 中文字幕第12页 | 久久婷婷色综合 | 激情综合丁香五月 | 久久一区二区三区四区 | 亚洲av色区一区二区三区 | 国产精品香蕉在线 | 成人黄色在线免费观看 | 性做久久 | 337p亚洲欧洲色噜噜噜 | 亚洲二区在线观看 | 狠狠操夜夜爽 | 中文字幕日韩视频 | 亚洲成人7777 | 中文字母av| 国产视频一区二区三区在线播放 | 伊人66 | 亚洲自拍电影 | 在线观看成年人网站 | 夜夜躁很很躁日日躁麻豆 | 亚洲第一av网 | 国产一区在线观看视频 | 日本一区二区三区久久 | 天天摸天天碰天天爽天天弄 | 波多野结衣在线一区二区 | 亚洲欧美日韩精品色xxx | 青娱乐导航 | 悠悠色影院 | 99国产精 | 日韩一区精品 | 久久婷婷五月综合 | 日韩欧美影院 | 国产寡妇色xxⅹ交肉视频 | 国产精品久久久久久人妻精品动漫 | 国产videos | 超薄肉色丝袜一区二区 | 91精品视频在线免费观看 | 国产区视频在线 | 中文字幕乱码亚洲无线三区 | 九色婷婷 | 久久久国产视频 | 国产在线h | 欧美绿帽合集xxxxx | 少妇精品一区二区三区 | 欧美一区视频在线 | 国产精品变态另类虐交 | 极品少妇一区二区三区 | 乌克兰做爰xxxⅹ性视频 | 青青青在线视频免费观看 | av日韩一区二区三区 | 99久久久无码国产精品性色戒 | 精品一区二区三区免费看 | 一级黄色伦理片 | 侵犯女教师一区二区三区 | 久久99久久久久久 | 麻豆精品国产传媒mv男同 | 欧美色图在线观看 | 一级大片免费 | 国产精品腿扒开做爽爽爽挤奶网站 | 国产精品高潮视频 | 人人妻人人澡人人爽 | 日韩免费久久 | 一区二区三区日韩电影 | 色网站在线看 | 韩国一区二区三区在线观看 | 久久男人 | 四川丰满少妇被弄到高潮 | 欧美一级片在线播放 | 超碰在线观看免费版 | 天堂网a | 黄色网页在线观看 | 18视频在线观看男男 | 三级色网 | 爱情岛亚洲首页论坛 | 国产亚洲无| 黄色网战在线观看 | 秋霞在线一区二区 | 国产不卡视频 | 久久五月综合 | 不许穿内裤随时挨c调教h苏绵 | 四级黄色片 | 精品久久久久久久久久久久久久 | 国产人成视频在线观看 |