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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

完全版STL程序?qū)W習

#include? " stdafx.h "
#ifndef????IOSTREAM_H
#include?
< iostream >
#endif
#include?
< vector >
#include?
< algorithm >
#include?
< iterator >

using ? namespace ?std;

int ?_tmain( int ?argc,?_TCHAR * ?argv[]) {
????typedef?vector
< int > ????????????????????????????int_vector;
????typedef?istream_iterator
< int > ????????????????istream_itr;
????typedef?ostream_iterator
< int > ????????????????ostream_itr;
????typedef?back_insert_iterator
< ?int_vector? > ????back_ins_itr;

????
// ?STL中的vector容器
????int_vector?num;

????
// ?從標準輸入設備讀入整數(shù),?
????
// ?直到輸入的是非整型數(shù)據(jù)為止
????copy(istream_itr(cin),?istream_itr(),?back_ins_itr(num));

????
// ?STL中的排序算法
????sort(num.begin(),?num.end());

????
// ?將排序結(jié)果輸出到標準輸出設備
????copy(num.begin(),?num.end(),?ostream_itr(cout,? " \n " ));

????
return ? 0 ;
}
完全STL的程序

在這個程序里幾乎每行代碼都是和STL有關的(除了main和那對花括號,當然還有注釋),并且它包含了STL中幾乎所有的各大部件(容器container,迭代器iterator, 算法algorithm, 適配器adaptor),唯一的遺憾是少了函數(shù)對象(functor)的身影。

還記得開頭提到的一個典型系統(tǒng)所具有的基本特征嗎?--輸入+處理+輸出。所有這些功能,在上面的程序里,僅僅是通過三行語句來實現(xiàn)的,其中每一行語句對應一種操作。對于數(shù)據(jù)的操作被高度的抽象化了,而算法和容器之間的組合,就像搭積木一樣輕松自如,系統(tǒng)的耦合度被降到了極低點。這就是閃耀著泛型之光的STL的偉大力量。如此簡潔,如此巧妙,如此神奇!就像魔術一般,以至于再一次讓你摸不著頭腦。怎么實現(xiàn)的?為什么在看第二版程序的時候如此清晰的你,又墜入了五里霧中(竊喜)。

請留意此處的標題(唯美主義的杰作),在實際環(huán)境中,你未必要做到這樣完美。畢竟美好愿望的破滅,在生活中時常會發(fā)生。過于理想化,并不是一件好事,至少我是這么認為的。正如前面提到的,這個程序只是為了展示STL的獨特魅力,你不得不為它的出色表現(xiàn)所折服,也許只有深諳STL之道的人才會想出這樣的玩意兒來。如果你只是一般性的使用STL,做到第二版這樣的程度也就可以了。

實在是因為這個程序太過"簡單",以至于我無法肯定,在你還沒有完全掌握STL之前,通過我的講解,是否能夠領會這區(qū)區(qū)三行代碼,我將盡我的最大努力。

前面提到的迭代器可以對容器內(nèi)的任意元素進行定位和訪問。在STL里,這種特性被加以推廣了。一個cin代表了來自輸入設備的一段數(shù)據(jù)流,從概念上講它對數(shù)據(jù)流的訪問功能類似于一般意義上的迭代器,但是C++中的cin在很多地方操作起來并不像是一個迭代器,原因就在于其接口和迭代器的接口不一致(比如:不能對cin進行++運算,也不能對之進行取值運算--即*運算)。為了解決這個矛盾,就需要引入適配器的概念。istream_iterator便是一個適配器,它將cin進行包裝,使之看起來像是一個普通的迭代器,這樣我們就可以將之作為實參傳給一些算法了(比如這里的copy算法)。因為算法只認得迭代器,而不會接受cin。對于上面程序中的第一個copy函數(shù)而言,其第一個參數(shù)展開后的形式是:istream_iterator(cin),其第二個參數(shù)展開后的形式是:istream_iterator()(如果你對typedef的語法不清楚,可以參考有關的c++語言書籍)。其效果是產(chǎn)生兩個迭代器的臨時對象,前一個指向整型輸入數(shù)據(jù)流的開始,后一個則指向"pass-the-end value"。這個函數(shù)的作用就是將整型輸入數(shù)據(jù)流從頭至尾逐一"拷貝"到vector這個準整型數(shù)組里,第一個迭代器從開始位置每次累進,最后到達第二個迭代器所指向的位置。或許你要問,如果那個copy函數(shù)的行為真如我所說的那樣,為什么不寫成如下這個樣子呢?

copy(istream_iterator<int>(cin), istream_iterator<int>(), num.begin());
	 

你確實可以這么做,但是有一個小小的麻煩。還記得第一版程序里的那個數(shù)組越界問題嗎?如果你這么寫的話,就會遇到類似的麻煩。原因在于copy函數(shù)在"拷貝"數(shù)據(jù)的時候,如果輸入的數(shù)據(jù)個數(shù)超過了vector容器的范圍時,數(shù)據(jù)將會拷貝到容器的外面。此時,容器不會自動增長容量,因為這只是簡單地拷貝,并不是從末端插入。為了解決這個問題,另一個適配器back_insert_iterator登場了,它的作用就是引導copy算法每次在容器末端插入一個數(shù)據(jù)。程序中的那個back_ins_itr(num)展開后就是:back_insert_iterator(num),其效果是生成一個這樣的迭待器對象。

posted on 2006-04-24 10:04 楊粼波 閱讀(820) 評論(0)  編輯 收藏 引用 所屬分類: 學習筆記

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            中文欧美字幕免费| 亚洲欧美精品在线| 亚洲人久久久| 在线国产亚洲欧美| 国内精品视频一区| 合欧美一区二区三区| 韩国精品在线观看| 亚洲国产91| 亚洲一区二区三区四区中文| 亚洲视频在线观看免费| 亚洲免费伊人电影在线观看av| 亚洲精选中文字幕| 亚洲自拍16p| 嫩草成人www欧美| 亚洲视频一二区| 久久综合伊人77777麻豆| 欧美日韩成人激情| 国产精品羞羞答答xxdd| 伊人久久亚洲影院| 亚洲欧美精品在线| 国产亚洲福利| 欧美成人亚洲成人日韩成人| 欧美成人综合网站| 亚洲午夜久久久久久久久电影网| 欧美中文日韩| 国产精品99一区二区| 亚洲国产精品成人一区二区| 亚洲欧美国产日韩天堂区| 亚洲成色www8888| 一本色道久久| 欧美日韩亚洲在线| 91久久精品国产91久久性色| 麻豆国产精品va在线观看不卡| 欧美体内谢she精2性欧美| 亚洲第一页中文字幕| 麻豆国产精品va在线观看不卡| 午夜激情综合网| 国产欧美一区二区精品秋霞影院| 亚洲欧美国产不卡| 亚洲欧美国产视频| 国产伦精品一区二区三| 久久av二区| 久久野战av| 99re热精品| 欧美中文字幕在线| 亚洲国内精品| 亚洲一区二区欧美日韩| 一区二区亚洲精品国产| 欧美激情视频一区二区三区免费| 欧美极品影院| 久久久免费精品视频| 欧美成人午夜| 久久高清免费观看| 欧美国产视频在线| 宅男噜噜噜66国产日韩在线观看| 欧美日韩国产专区| 美女久久一区| 欧美精品一区二区三区久久久竹菊| 亚洲欧美日韩综合国产aⅴ| 久久久久久网| 亚洲永久免费精品| 免费在线看成人av| 校园激情久久| 国产精品福利网站| 这里只有精品视频| 宅男噜噜噜66一区二区| 欧美**字幕| 亚洲福利视频二区| 91久久精品久久国产性色也91| 亚洲欧美日韩天堂一区二区| 亚洲人成网站影音先锋播放| 久久婷婷人人澡人人喊人人爽| 久久九九全国免费精品观看| 国产日韩欧美中文| 午夜久久久久久| 欧美一区国产一区| 国产视频综合在线| 老司机67194精品线观看| 毛片av中文字幕一区二区| 伊人久久久大香线蕉综合直播| 久久精品国产综合精品| 欧美成人免费小视频| 亚洲日本欧美日韩高观看| 欧美好骚综合网| 亚洲欧美久久久久一区二区三区| 久久精品亚洲一区二区| 影音先锋一区| 欧美日韩国产综合视频在线| 亚洲一区二区黄色| 欧美成人三级在线| 性欧美18~19sex高清播放| 亚洲国产成人午夜在线一区| 狠狠噜噜久久| 老色鬼久久亚洲一区二区| 亚洲视频第一页| 毛片一区二区三区| 欧美在线|欧美| 在线观看欧美激情| 国产精品视频一二三| 欧美国产精品劲爆| 久久久精品日韩| 久久精品国产久精国产思思| 日韩午夜一区| 亚洲最快最全在线视频| 亚洲高清免费在线| 欧美.www| 欧美成ee人免费视频| 欧美在线免费观看亚洲| 亚洲视频综合| 亚洲欧美日韩在线综合| 日韩一二三区视频| 99re热精品| 一区二区久久| 亚洲制服欧美中文字幕中文字幕| 99re6热在线精品视频播放速度| 亚洲日本一区二区| 日韩午夜免费| 欧美影院视频| 久热精品在线| 欧美日韩国产在线一区| 国产精品日韩欧美大师| 国产曰批免费观看久久久| 影音先锋久久精品| 亚洲视频在线观看三级| 欧美一激情一区二区三区| 六月天综合网| 亚洲调教视频在线观看| 欧美亚洲免费电影| 欧美成人综合一区| 国产免费成人av| 日韩一级黄色片| 久久资源在线| 在线综合亚洲| 永久久久久久| 一区二区三区四区国产| 美日韩精品视频| 国产亚洲精品久久久久婷婷瑜伽 | 亚洲精品美女久久久久| 亚洲资源av| 一本色道久久综合亚洲精品不卡| 亚洲在线中文字幕| 国产精品第2页| 亚洲视频精选| 在线一区二区三区做爰视频网站| 久久免费国产精品1| 怡红院av一区二区三区| 久久久精品国产99久久精品芒果| 宅男噜噜噜66一区二区| 欧美日韩a区| 亚洲一区二区黄| 在线一区观看| 国产精品爱久久久久久久| 在线亚洲自拍| 亚洲欧美日韩一区| 国产亚洲欧美另类一区二区三区| 亚洲欧美日韩在线综合| 亚洲欧美日本在线| 樱花yy私人影院亚洲| 美女尤物久久精品| 欧美成人激情视频免费观看| 亚洲二区视频| 在线亚洲欧美| 亚洲高清成人| 亚洲一区久久久| 国内一区二区三区在线视频| 欧美激情视频一区二区三区不卡| 欧美日本一道本在线视频| 欧美尤物巨大精品爽| 欧美欧美在线| 免费观看久久久4p| 欧美亚州一区二区三区| 欧美成人综合网站| 国产乱码精品| 一区二区三区精品视频在线观看| 国产亚洲毛片| 亚洲综合好骚| 亚洲欧美成人一区二区在线电影| 久久成人精品无人区| 国产一区二区中文| 亚洲国产视频直播| 国产精品久久久久久久久久直播| 久久综合久久88| 国内精品久久久| 小处雏高清一区二区三区| 中文精品视频| 欧美激情在线播放| 最新国产成人在线观看| 91久久夜色精品国产九色| 久久久99免费视频| 免费不卡亚洲欧美| 亚洲国产精品成人综合| 老鸭窝毛片一区二区三区| 欧美成年人视频网站欧美| 亚洲欧洲午夜| 欧美午夜不卡影院在线观看完整版免费| 亚洲高清视频中文字幕| 亚洲精品三级| 国产精品久久久一本精品| 久久成人精品无人区| 亚洲国产成人在线视频|