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

牽著老婆滿街逛

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

完全版STL程序學習

#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;

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

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

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

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

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

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

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

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

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

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

你確實可以這么做,但是有一個小小的麻煩。還記得第一版程序里的那個數組越界問題嗎?如果你這么寫的話,就會遇到類似的麻煩。原因在于copy函數在"拷貝"數據的時候,如果輸入的數據個數超過了vector容器的范圍時,數據將會拷貝到容器的外面。此時,容器不會自動增長容量,因為這只是簡單地拷貝,并不是從末端插入。為了解決這個問題,另一個適配器back_insert_iterator登場了,它的作用就是引導copy算法每次在容器末端插入一個數據。程序中的那個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>
            亚洲免费电影在线| 99在线观看免费视频精品观看| 最新精品在线| 一区二区三区你懂的| 蜜臀av在线播放一区二区三区| 裸体歌舞表演一区二区| 国产伦精品一区二区三区| 午夜国产不卡在线观看视频| 亚洲日韩欧美视频| 欧美系列精品| 在线日本欧美| 亚洲三级免费电影| 国产精品久久999| 亚洲一二三区精品| 亚洲性xxxx| 国产一区亚洲| 欧美午夜电影在线| 欧美一区二区三区四区夜夜大片| 亚洲综合色丁香婷婷六月图片| 国产精品尤物| 免费在线看一区| 欧美精品一区二区三区在线看午夜 | 久久视频在线免费观看| 亚洲国产精品传媒在线观看| 亚洲乱码久久| 国产真实久久| 亚洲砖区区免费| 午夜久久影院| 国产午夜精品久久久久久免费视| 亚洲人成在线影院| 日韩视频在线观看免费| 久久资源在线| 欧美18av| 亚洲欧美999| 亚洲高清视频的网址| 亚洲在线日韩| 亚洲人永久免费| 久久精品亚洲一区| 亚洲理论在线观看| 亚洲天堂成人在线视频| 欧美日韩一二三区| 免费国产一区二区| 在线欧美日韩| 欧美精品激情在线| 亚洲手机在线| 久久一区国产| 亚洲伦伦在线| 国产农村妇女精品一区二区| 欧美亚洲三区| 亚洲人成网站精品片在线观看| 一本高清dvd不卡在线观看| 激情成人中文字幕| 美女久久一区| 亚洲黄色在线| 久久精品99国产精品| 精品盗摄一区二区三区| 麻豆91精品91久久久的内涵| 亚洲精品视频在线播放| 久久av一区二区三区漫画| 激情久久久久久久| 欧美日韩伊人| 久久综合九色| 亚洲免费电影在线观看| 久久人91精品久久久久久不卡| 最近中文字幕mv在线一区二区三区四区| 国产精品久久午夜夜伦鲁鲁| 另类专区欧美制服同性| 91久久夜色精品国产九色| 久久精品国产99精品国产亚洲性色| 精品成人免费| 亚洲第一网站| 在线观看日韩精品| 一区国产精品| 亚洲精品一二| 日韩一级不卡| 亚洲日本成人| 亚洲国产三级| 亚洲精品视频免费| 亚洲人精品午夜| 亚洲动漫精品| 亚洲美女在线国产| 亚洲另类春色国产| 一区二区三区四区五区视频| 亚洲激情午夜| 亚洲综合999| 久久久久久亚洲精品杨幂换脸| 久久精品国产v日韩v亚洲 | 免费短视频成人日韩| 蜜臀av一级做a爰片久久| 欧美不卡激情三级在线观看| 久久这里只有精品视频首页| 牛牛国产精品| 一区二区三区欧美视频| 久久精品国产99国产精品澳门| 久久aⅴ国产紧身牛仔裤| 欧美成人tv| 国内精品久久久久久影视8| 亚洲区在线播放| 欧美在线视频一区二区| 欧美大片免费观看| 香蕉亚洲视频| 欧美三级特黄| 日韩视频免费在线| 美日韩精品视频免费看| 亚洲性色视频| 欧美午夜在线| 亚洲女爱视频在线| 亚洲国产一区二区精品专区| 另类亚洲自拍| 亚洲色图综合久久| 亚洲网站在线| 国产一区二区三区高清| 久久成人免费电影| 午夜精品久久久久久久蜜桃app| 国产精品video| 亚洲欧美日韩在线观看a三区| 日韩网站在线观看| 国产精品久久国产愉拍| 亚洲深夜影院| 亚洲欧美国产三级| 精久久久久久| 亚洲黄色性网站| 国产精品久久久免费| 亚洲午夜性刺激影院| 亚洲欧美成人一区二区在线电影| 国产精品美女999| 久久精品国产综合精品| 久久综合激情| 欧美亚洲一区三区| 欧美国产第一页| 欧美一区91| 欧美色网一区二区| 免费观看欧美在线视频的网站| 欧美激情亚洲精品| 欧美乱大交xxxxx| 玖玖玖国产精品| 国产精品亚洲美女av网站| 欧美激情小视频| 亚洲激情小视频| 性高湖久久久久久久久| 亚洲一区二区欧美日韩| 久久国内精品视频| 亚洲欧美伊人| 欧美国产日韩xxxxx| 猛男gaygay欧美视频| 狠狠入ady亚洲精品| 亚洲一区在线观看免费观看电影高清| 影音欧美亚洲| 香蕉久久一区二区不卡无毒影院 | 国产一区二区毛片| 欧美亚洲视频在线观看| 亚洲午夜高清视频| 国产日韩欧美| 久久精品国产免费| 欧美激情一区| 亚洲无限av看| 国模私拍视频一区| 久久成人免费电影| 久久久精品动漫| 影音先锋久久| 欧美国产专区| 一区二区三区国产| 亚洲伊人色欲综合网| 国产精品久久久久久av下载红粉 | 欧美一区二区三区在线看| 久久青草欧美一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 蜜臀久久99精品久久久久久9 | 亚洲视频1区2区| 久久综合九色综合久99| 91久久久久久| 国产精品婷婷午夜在线观看| 欧美一区二区高清| 亚洲另类在线一区| 美女日韩欧美| 久久精精品视频| 久久久国产午夜精品| 日韩视频二区| 亚洲第一偷拍| 久久国产加勒比精品无码| 日韩视频在线一区二区| 国产三级欧美三级日产三级99| 欧美日韩成人在线播放| 美女999久久久精品视频| 午夜一区在线| 午夜精品影院| 亚洲一区日韩| 亚洲午夜一区二区| 亚洲精品久久在线| 亚洲国产欧美一区| 亚洲第一综合天堂另类专| 久久综合给合| 亚洲福利一区| 99re热这里只有精品视频 | 欧美一级黄色录像| 亚洲性人人天天夜夜摸| 欧美一区二区三区喷汁尤物| 亚洲女性裸体视频| 久久精品国产在热久久| 久久久亚洲综合|