C++中迭代器

來源:互聯網
上載者:User

C++中的容器

  標準序列容器:vector、string、deque、list

  標準關聯容器:set、multiset、map、multimap

 

迭代器的分類

  根據迭代器所支援的操作,可以把迭代器分為5類。

  1、輸入迭代器:是唯讀迭代器,在每個被遍曆的位置上只能讀取一次。

  2、輸出迭代器:是唯寫迭代器,在每個被遍曆的位置上只能被寫一次。

  3、前向迭代器:兼具輸入和輸出迭代器的能力,但是它可以對同一個位置重複進行讀和寫。但它不支援operator--,所以只能向前移動。

  4、雙向迭代器:很像前向迭代器,只是它向後移動和向前移動同樣容易。

  5、隨機訪問迭代器:有雙向迭代器的所有功能。而且,它還提供了“迭代器算術”,即在一步內可以向前或向後跳躍任意位置。

 

C++容器中提供的迭代器

  1、輸入和輸出迭代器的模型分別是建立在針對輸入和輸出資料流(例如檔案)的讀寫操作基礎上的。所以不難理解,輸入和輸出迭代器最常見的表現形式是 istream_iterator和ostream_iterator。

  2、所有的標準STL容器都支援比前向迭代器功能更強大的迭代器。(雜湊容器的一種、單向鏈表容器例外,它們提供前向迭代器)

  3、標準關聯容器都提供了雙向迭代器。list也是如此。

  4、vector、string、deque都提供了隨機訪問迭代器。指向數組的內部指標對於數組來說也是隨機訪問迭代器。

 

istream_iterator和ostream_iterator使用樣本

istream_iterator

 1 // istream_iterator example
 2 #include <iostream>
 3 #include <iterator>
 4 using namespace std;
 5 
 6 int main () {
 7   double value1, value2;
 8   cout << "Please, insert two values: ";
 9 
10   istream_iterator<double> eos;         // end-of-stream iterator
11   istream_iterator<double> iit (cin);   // stdin iterator
12 
13   if (iit!=eos) value1=*iit;
14 
15   iit++;
16   if (iit!=eos) value2=*iit;
17 
18   cout << value1 << "*" << value2 << "=" << (value1*value2) << endl;
19 
20   return 0;
21 }
22 

 

 output:

Please, insert two values: 2 322*32=64
ostream_iterator

 1 // ostream_iterator example
 2 #include <iostream>
 3 #include <iterator>
 4 #include <vector>
 5 using namespace std;
 6 
 7 int main () {
 8   vector<int> myvector;
 9   for (int i=1; i<10; ++i) myvector.push_back(i*10);
10 
11   ostream_iterator<int> out_it (cout,", ");
12   copy ( myvector.begin(), myvector.end(), out_it );
13   return 0;
14 }
15 

 

output:

10, 20, 30, 40, 50, 60, 70, 80, 90, 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.