青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-163  評(píng)論-223  文章-30  trackbacks-0
   本文以系統(tǒng)的struct timeval為例,使其支持+、-、+=、-=4種算術(shù)運(yùn)算和<,<=,>,>=,==、!= 6種關(guān)系運(yùn)算,這樣一來就免去了顯式調(diào)用函數(shù)的麻煩,使代碼簡(jiǎn)潔優(yōu)雅,實(shí)現(xiàn)如下
 1extern void timeval_normalize(timeval &t);
 2
 3class timeval_t : public ::timeval
 4{
 5public:
 6    timeval_t(long sec = 0,long usec = 0)
 7    {
 8        tv_sec = sec, tv_usec = usec;
 9        timeval_normalize(*this);
10    }

11    
12    timeval_t(const timeval& t)
13    {
14        if (this != &t){
15            tv_sec = t.tv_sec, tv_usec = t.tv_usec;
16            timeval_normalize(*this);
17        }

18    }

19    
20    timeval_t& operator = (const timeval &t)
21    {
22        if (this != &t){
23            tv_sec = t.tv_sec, tv_usec = t.tv_usec;
24            timeval_normalize(*this);
25        }

26        return *this;
27    }

28}
;
29
30inline void operator += (timeval &t1,const timeval &t2)
31{
32    t1.tv_sec += t2.tv_sec,t1.tv_usec += t2.tv_usec;
33    timeval_normalize(t1);
34}

35
36inline void operator -= (timeval &t1,const timeval &t2)
37{
38    t1.tv_sec -= t2.tv_sec, t1.tv_usec -= t2.tv_usec;
39    timeval_normalize(t1);
40}
    
41
42inline timeval operator + (const timeval &t1,const timeval &t2)
43{
44    return timeval_t(t1.tv_sec+t2.tv_sec,t1.tv_usec+t2.tv_usec);
45}

46
47inline timeval operator - (const timeval &t1,const timeval &t2)
48{
49    return timeval_t(t1.tv_sec-t2.tv_sec,t1.tv_usec-t2.tv_usec);
50}

51
52inline bool operator == (const timeval &t1,const timeval &t2)
53
54    timeval_t t(t1.tv_sec-t2.tv_sec,t1.tv_usec-t2.tv_usec);
55    return 0==t.tv_sec&&0==t.tv_usec;
56}

57
58inline bool operator != (const timeval &t1,const timeval &t2)
59{
60    return !(t1 == t2);
61}

62
63inline bool operator < (const timeval &t1,const timeval &t2)
64{
65    timeval t = t1 - t2;
66    return t.tv_sec < 0;
67}

68
69inline bool operator > (const timeval &t1,const timeval &t2)
70{
71    timeval t = t1 - t2;
72    return 0==t.tv_sec && t.tv_usec>0 || t.tv_sec>0;
73}

74
75inline bool operator <= (const timeval &t1,const timeval &t2)
76{
77    return !(t1 > t2);
78}

79
80inline bool operator >= (const timeval &t1,const timeval &t2)
81{
82    return !(t1 < t2);
83}
   由于timeval_t公有繼承timeval,因此上述10種運(yùn)算也支持timeval_t類型,而算術(shù)運(yùn)算的內(nèi)部實(shí)現(xiàn)保證了運(yùn)算結(jié)果timeval對(duì)象是有效的,即其成員變量tv_usec取值在[0,1000000)區(qū)間,這是通過timeval_normalize函數(shù)實(shí)現(xiàn)的,代碼如下
 1static const long ONE_SECOND_IN_USECS = 1000000;
 2
 3void timeval_normalize(timeval &t)
 4{
 5    if (t.tv_usec >= ONE_SECOND_IN_USECS){
 6        do {
 7            ++t.tv_sec;
 8            t.tv_usec -= ONE_SECOND_IN_USECS;
 9        }
while (t.tv_usec >= ONE_SECOND_IN_USECS);
10    }
else if (t.tv_usec <= -ONE_SECOND_IN_USECS) {
11        do     {
12            --t.tv_sec;
13            t.tv_usec += ONE_SECOND_IN_USECS;
14        }
while (t.tv_usec <= -ONE_SECOND_IN_USECS);
15    }

16
17    if (t.tv_sec >= 1 && t.tv_usec < 0)    {
18        --t.tv_sec;
19        t.tv_usec += ONE_SECOND_IN_USECS;
20    }

21}

   最后來看下使用示例  
 1    timeval t1,t2,t3;
 2    timeval_t tv1,tv2,tv3;
 3    bool b;
 4
 5    b = t1 == t2;
 6    b = t1 != t2;
 7    b = t1 == tv2;
 8    b = t1 != tv2;
 9    b = tv1 == t2;
10    b = tv1 != t2;
11    b = tv1 == tv2;
12    b = tv1 != tv2;
13
14    b = t1 < t2;
15    b = t1 <= t2;
16    b = t1 > t2;
17    b = t1 >= t2;
18    b = t1 < tv2;
19    b = t1 <= tv2;
20    b = t1 > tv2;
21    b = t1 >= tv2;
22
23    b = tv1 < t2;
24    b = tv1 <= t2;
25    b = tv1 > t2;
26    b = tv1 >= t2;
27    b = tv1 < tv2;
28    b = tv1 <= tv2;
29    b = tv1 > tv2;
30    b = tv1 >= tv2;
31
32    t3  = t1 + t2;
33    t3  = tv1 + tv2;
34    t3  = t1 + tv2;
35    t3  = tv1 + t2;
36    tv3  = t1 + t2;
37    tv3  = tv1 + tv2;
38    tv3  = t1 + tv2;
39    tv3  = tv1 + t2;
40
41    t3  = t1 - t2;
42    t3  = tv1 - tv2;
43    t3  = t1 - tv2;
44    t3  = tv1 - t2;
45    tv3  = t1 - t2;
46    tv3  = tv1 - tv2;
47    tv3  = t1 - tv2;
48    tv3  = tv1 - t2;
49
50    t1  += t2;
51    t1  += tv2;
52    tv1 += t2;    
53    tv1 += tv2;
54    t1  -= t2;
55    t1  -= tv2;
56    tv1 -= t2;
57    tv1 -= tv2;
  可以看到將運(yùn)算符用到C式結(jié)構(gòu)上,大大簡(jiǎn)化了代碼的編寫。以上所有代碼在vc2005和g++4.4下編譯通過。
posted on 2013-10-28 23:37 春秋十二月 閱讀(1569) 評(píng)論(2)  編輯 收藏 引用 所屬分類: C/C++

評(píng)論:
# re: 巧用重載支持C式結(jié)構(gòu)的一些運(yùn)算 2013-10-29 17:23 | 路過
這是基本用法,談不上‘巧用’  回復(fù)  更多評(píng)論
  
# re: 重載運(yùn)算符之應(yīng)用: 支持C式結(jié)構(gòu)的一些運(yùn)算 2013-11-15 09:00 | zjx
大哥 這個(gè)很好啊 學(xué)習(xí)  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲视频在线观看| 亚洲黄色有码视频| 校园激情久久| 一区二区高清| 亚洲一区二区三区在线| 亚洲一区二区四区| 亚洲欧美日韩人成在线播放| 亚洲欧美视频在线观看| 午夜精品理论片| 久久在线视频| 亚洲日本激情| 亚洲天天影视| 久久先锋资源| 国产精品成人观看视频免费| 国产精品一区视频网站| 尤物九九久久国产精品的分类| 亚洲国产二区| 亚洲免费视频网站| 免费成人性网站| 宅男噜噜噜66国产日韩在线观看| 欧美伊人久久大香线蕉综合69| 久久免费偷拍视频| 欧美日韩美女一区二区| 国产偷国产偷亚洲高清97cao| 久久综合久久综合九色| 久久综合狠狠综合久久综青草| 亚洲乱码国产乱码精品精可以看| 中文日韩在线视频| 久久久久看片| 国产精品a级| 亚洲福利一区| 午夜免费在线观看精品视频| 欧美91精品| 亚洲少妇在线| 欧美激情黄色片| 黄色免费成人| 午夜在线成人av| 亚洲人成在线免费观看| 欧美中文字幕在线观看| 国产精品成人一区二区网站软件| 在线观看91精品国产入口| 亚洲欧美自拍偷拍| 日韩网站在线看片你懂的| 久久久视频精品| 国产日韩视频| 亚洲欧美在线观看| 99视频精品全部免费在线| 你懂的视频欧美| 在线精品福利| 久久天堂成人| 久久成人精品视频| 午夜在线精品偷拍| 国产精品久久久久久久午夜| 日韩一区二区高清| 亚洲国产天堂久久国产91| 久久精品国产99精品国产亚洲性色 | 国产精品综合网站| 亚洲一区欧美激情| 亚洲黄色成人| 欧美freesex交免费视频| 韩国一区电影| 久久一区激情| 老司机精品视频网站| 1024精品一区二区三区| 巨乳诱惑日韩免费av| 久久久久成人精品| 在线观看日韩av| 欧美电影在线观看完整版| 女仆av观看一区| 亚洲色无码播放| 国产精品99久久久久久人| 国产精品久久久久久模特| 羞羞色国产精品| 久久成人亚洲| 亚洲激情国产精品| 亚洲伦理在线观看| 国产精品一级二级三级| 久久久久久9999| 蜜臀av一级做a爰片久久| 99re热这里只有精品视频| 欧美成人免费一级人片100| 久久久999国产| 欧美成人午夜激情视频| 日韩一区二区福利| 亚洲午夜日本在线观看| 国产性猛交xxxx免费看久久| 欧美午夜精品久久久久久久| 欧美成人蜜桃| 久久精品道一区二区三区| 国产在线观看一区| 久久久久国内| 欧美成人性生活| 亚洲私人影吧| 久久精品在线播放| 亚洲人成网站在线观看播放| 亚洲另类自拍| 国产日韩欧美综合一区| 欧美国产日韩一区二区三区| 欧美日韩综合不卡| 久久久亚洲综合| 欧美激情成人在线| 欧美在线视频一区二区三区| 免费在线看成人av| 亚洲欧美怡红院| 欧美成人午夜激情| 久久国产婷婷国产香蕉| 欧美成人性生活| 久久精品一区中文字幕| 欧美搞黄网站| 久久久在线视频| 欧美性猛片xxxx免费看久爱 | 欧美国产亚洲另类动漫| 亚洲欧美日韩久久精品| 欧美精品一区在线播放| 久久亚洲精品一区二区| 国产精品日韩一区二区| 91久久国产综合久久| 国产精品久久国产精品99gif| 欧美gay视频| 国产日韩欧美在线观看| 亚洲一区二区三区高清| 亚洲午夜激情网站| 欧美伦理在线观看| 亚洲国产精品悠悠久久琪琪| 好吊成人免视频| 亚洲欧美大片| 先锋影音一区二区三区| 欧美日韩在线三区| 在线一区亚洲| 亚洲在线网站| 国产精品露脸自拍| 亚洲中字黄色| 午夜精品久久久久久久男人的天堂| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产婷婷一区二区| 在线亚洲一区二区| 亚洲综合国产激情另类一区| 欧美日韩国产专区| 日韩视频免费在线观看| 亚洲视频免费观看| 欧美日韩三级视频| 一区二区精品在线| 午夜精品视频在线观看| 国产美女精品视频| 欧美在线免费视频| 欧美成人亚洲| 亚洲麻豆一区| 欧美日韩不卡视频| 在线亚洲免费| 欧美在线观看一区| 狠狠色丁香婷婷综合影院| 久久精品女人天堂| 欧美国产日韩精品| 在线综合视频| 国产视频自拍一区| 久久永久免费| 亚洲精品孕妇| 香蕉久久夜色精品国产| 国产资源精品在线观看| 老鸭窝91久久精品色噜噜导演| 最新日韩中文字幕| 亚洲欧美日韩精品久久| 国语精品一区| 欧美激情综合色| 亚洲婷婷免费| 久久婷婷久久| 夜夜狂射影院欧美极品| 国产精品亚洲а∨天堂免在线| 欧美在线视频观看免费网站| 你懂的国产精品| 亚洲一区欧美一区| 亚洲高清av| 国产精品毛片va一区二区三区| 久久国产欧美| 99视频精品| 欧美成人精品激情在线观看| 中文在线资源观看视频网站免费不卡| 国产日韩欧美二区| 欧美日韩成人在线播放| 欧美在线观看日本一区| 日韩一区二区久久| 蜜乳av另类精品一区二区| 亚洲午夜精品一区二区| 亚洲成色最大综合在线| 欧美午夜精品久久久久久超碰| 久久国产日韩| 亚洲午夜国产成人av电影男同| 欧美成人69| 久久久成人网| 亚洲自拍偷拍网址| 一区二区三区福利| 亚洲第一成人在线| 国产精品一区二区你懂得 | 国产视频一区在线观看一区免费| 欧美激情一区二区在线 | 国产麻豆91精品| 欧美区二区三区| 久久久午夜电影| 性欧美video另类hd性玩具| 亚洲精品影院在线观看|