2014年7月12日 星期六

istream_iterator是讓輸入流得以抽象成iterator的進階使用

使得STL的algorithm搭配容器使用更為方便

//範例一
//如往常在ZeroJudge系統常看到的測資
// 1 2 3 4 5 6 5 ...... 一串輸入要輸入至容器中(如vector)
//可以這樣使用

istream_iterator < int > iiter(cin),eos;

//這裡的cin可以換成你自己宣告的輸入流(如:sstream or fstream)

vector < int > vec(iiter,eos);

//這樣就輸入完了
//範例二
//主要是示範資料分群並有提供資料數目

//3 這裡的3代表的是要有多少資料輸入至容器中
//4 5 6 測資

//在C++11的標準下可以這樣使用
vector < int > vec;

copy_n(istream_iterator < int > (cin),n,back_inserter(vec));

//這裡的cin跟前面範例一樣,istream_iterator我懶得再另外宣告變數
//n代表要輸入的資料數,如上面提供的測資的話為3
//back_inserter來包裝vec使他得以隨著資料增加,也變動容量,如果使用list就不需要這樣包裝
//記得要開啟c++11的標準來編譯

//這樣就輸入完了

0 意見:

張貼留言