實習目標 | 有了 vector<type> 容器,也看過 vector<type>::iterator 的基本用法,我們可以很容易地運用 iterator 把容器裡的資料輸出到 ostream 輸出串流,不過這裡介紹一種運用 iterator adaptors 的方法 |
---|---|
一 |
ostream_iterator 運用 ostream_iterator 和 copy 把容器裡的資料輸出到 ostream 輸出串流 #include <iostream> // std::cout #include <iterator> // std::ostream_iterator #include <vector> // std::vector #include <algorithm> // std::copy int main () { std::vector<int> myvector; for (int i=1; i<10; ++i) myvector.push_back(i*10); std::ostream_iterator<int> out_it(std::cout,", "); std::copy( myvector.begin(), myvector.end(), out_it ); return 0; } 輸出如下: 10, 20, 30, 40, 50, 60, 70, 80, 90, |
二 | istream_iterator運用 istream_iterator 讀取輸入串流 例如: #include <iostream> // std::cin, std::cout #include <iterator> // std::istream_iterator int main() { double value1, value2; std::cout << "Please, insert two values: "; std::istream_iterator<double> eos; // end-of-stream iterator std::istream_iterator<double> iit(std::cin); // stdin iterator if (iit!=eos) value1 = *iit; ++iit; if (iit!=eos) value2 = *iit; std::cout << value1 << '*' << value2 << '=' << (value1*value2) << '\n'; return 0; } 輸出如下: Please, insert two values: 2 32 |
三 | reverse_iterator也可以運用 reverse_iterator 把容器裡的資料用相反的順序來存取 例如: #include <iostream> // std::cout #include <iterator> // std::reverse_iterator #include <vector> // std::vector int main() { std::vector<int> myvector; for (int i=0; i<10; i++) myvector.push_back(i); typedef std::vector<int>::iterator iter_type; // ? 0 1 2 3 4 5 6 7 8 9 ? iter_type from(myvector.begin()); // ^ // ------> iter_type until(myvector.end()); // ^ // std::reverse_iterator<iter_type> rev_until(from); // ^ // <------ std::reverse_iterator<iter_type> rev_from until); // ^ std::cout << "myvector:"; while (rev_from != rev_until) std::cout << ' ' << *rev_from++; std::cout << '\n'; return 0; } 輸出如下: myvector: 9 8 7 6 5 4 3 2 1 0 |
回
C++ 物件導向程式設計課程
首頁
製作日期: 06/19/2015 by 丁培毅 (Pei-yih Ting) E-mail: pyting@mail.ntou.edu.tw TEL: 02 24622192x6615 海洋大學 電機資訊學院 資訊工程學系 Lagoon |