迭代器是一種處理位於容器中的元素序列的非常一般而又極其有用的概念。但是,容器並不是我們能夠遇到元素序列的僅有的地方。例如,乙個輸入流也能產生乙個值的序列,我們也會把乙個值的序列寫進乙個輸出流中。正因為這樣,人們也將迭代器的概念很有效地應用到輸入和輸出上。
要做出乙個ostream_iterator,我們需要描述被使用的將是哪個流,還要描述寫入其中的物件的型別。例如,我們可以定義乙個引用了標準輸出流cout的迭代器:
給 *oo賦值的效果就是使被賦的值送到cout。例如,
這就形成另一種向標準輸出寫規範資訊的方式。這裡 ++oo的記法是模仿通過指標向陣列寫入的方式。對於簡單的工作,這種方式不會是我的第一選擇。但把輸出處理為一種只能寫入的容器是很有用的,我們不久就會看得更清楚—如果現在還沒完全明白的話。
與此類似,乙個istream_iterator就是某種東西,它使我們可以像從容器讀出一樣從輸入流中讀出。同樣,我們必須描述所用的輸入流和所期望的值型別:
由於輸入迭代器總是成對出現,以表示乙個序列,因此我們也就必須提供另乙個istream_iterator去表示輸入的結束。這就是那個預設的istream_iterator:
現在我們就能從輸入流讀入hello, world!,而後再次將它寫出去:
實際中,istream_iterator和ostream_iterator並不是想供人們直接使用的,它們主要是為了給演算法提供引數。例如,我們可以寫出乙個簡單程式,它讀入乙個檔案,對所讀的東西排序,去掉重複,最後將結果寫入另乙個檔案:
ifstream就是可以附著到檔案上的istream,ofstream是可以附著到檔案上的ostream。ostream_iterator的第二個引數用於分隔各個輸出值。
迭代器和I O
迭代器用在處理元素序列的地方。可以將迭代器的概念有效利用在輸入輸出上。輸出 include include include using namespace std ostream iteratoroo cout int main 上述 列印出hello,world和cout相同。輸入 include...
io流迭代器
建立乙個流迭代器的時候必須指定迭代器將要讀寫的物件型別。istream iterator istream iteratorin iter cin 從cin讀取int istream iteratoreof 尾後迭代器通過流迭代器讀入資料的例子 while in iter eof 注意 運算子的優先順...
迭代器和反向迭代器,常量迭代器和非常量迭代器
迭代器的型別共有4種 iiterator,const iterator,reverse iterator,const reverse iterator include include include include using namespace std int main include inclu...