如何理解c++迭代器(上)

來源:互聯網
上載者:User

標籤:左值   指標   class   內建   算術   引用   reference   工作   隨機   

1、如何理解迭代器?迭代器不是指標,也似乎不是string這種類型

參考:迭代器與指標的區別是? C++map迭代器的++操作是如何?的?討論。iterator提供了遍曆STL容器裡元素的方式,not-only-read,還可以修改這些元素,如賦值,這需要解引用操作返回的是元素的左值引用。

考慮pointer遍曆數組和鏈表,前者p++,後者p=p->next,而iterator提供了抽象的統一操作iterator++。STL裡的各種容器實現細節不一樣(記憶體管理不一樣,如string就有三種實現方式),如果用指標去遍曆,需要像容器的實現者那樣瞭解各種細節,訪問形式也是不一致。所以迭代器提供了更直觀更好用的方式 acess elements in Containers。

2、forward_list的迭代器為什麼和vector的迭代器不一樣?見c++ primer 5th

類比指標的算術運算,迭代器需要支援的操作?++、--、*、+n、-n、=、==、!=。forward_list的迭代器不支援+n操作,因為這提供了對元素的隨機訪問能力,而前向鏈表實現的是單鏈表的功能,所以不能提供。iterator、迭代器的五種類型、隨機訪問迭代器。

3、如何?一個迭代器,如果自訂了容器類型,需要完成那些工作STL內建的迭代器能訪問元素?

為什麼C++ STL的迭代器要嵌套在容器之中?因為容器的實現方式不一樣。

自訂一個容器類,如何引入迭代器機制?define iterator?具體迭代器的實現可參考《STL源碼剖析》。

如何理解c++迭代器(上)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.