stream iterator 是另外一種迭代器適配器,這是個用來讀寫stream(I/O通道的對象)的迭代器,該迭代器可以從鍵盤中獲取輸入的內容,一樣的,咱們也能夠把一個算法的輸出結果從新導向到一個文件或屏幕上。具體來講,一個istream迭代器能夠從input stream中讀取元素,而一個ostream迭代器能夠用來對output stream寫入元素。html
/************************************************************************/ //功能:從標誌輸入讀取全部的輸入文字,排序,將不重複的文件打印到屏幕 /************************************************************************/ void StreamIterator() { vector<string> strVector; //istream_iterator 是輸入流迭代器 copy(istream_iterator<string>(cin), istream_iterator<string>(), back_inserter(strVector)); sort(strVector.begin(), strVector.end()); //類unique算法,消除毗鄰的相同元素值,ostream_iterator 輸出流迭代器 unique_copy(strVector.begin(), strVector.end(), ostream_iterator<string>(cout, "\n")); }
/**************************************************** *函數名稱:OstreamExample *功 能:output迭代器的用法 *做 者:Jin *日 期:2016年5月22日 ****************************************************/ void OstreamExample() { //產生ostream迭代器,指向標準輸出(屏幕) ostream_iterator<int> IntWriter(cout, " \n"); *IntWriter = 42;//屏幕打印42並換行 IntWriter++; *IntWriter = 77;//屏幕打印77並換行 IntWriter++; *IntWriter = -5;//屏幕打印-5 並換行 IntWriter++; vector<int> IntVector; for (int i = 0;i < 10; ++i) { IntVector.push_back(i); } //各元素以talbe鍵分隔 copy(IntVector.begin(), IntVector.end(), ostream_iterator<int>(cout, "\t")); //各元素以<分隔 copy(IntVector.begin(), IntVector.end(), ostream_iterator<int>(cout, " < ")); cout << endl; }