C++迭代器

來源:互聯網
上載者:User

標籤:訪問   strong   ons   one   指標類型   blog   log   簡介   不同   

  • 迭代器的簡介:
    • 迭代器類似於指標類型,它也提供了對對象的間接訪問
    • 指標是C語言中就有的東西,而迭代器是C++中才有的
    • 迭代器提供一個對容器物件或者string對象訪問的方法,並且定義了容器範圍
  • 使用迭代器:
    • 和指標不一樣的是,擷取迭代器不是使用取地址符,有迭代器的類型同時擁有返回迭代器的成員,比如,容器都有的成員beginend,其中begin成員負責返回指向容器第一個元素的迭代器,如:auto b = v.begin();end成員則負責返回指向容器的尾元素的下一個位置的迭代器,也就是說指向的是容器的一個本不存在的尾部。
    • 如果容器為空白,則beginend返回的是同一個迭代器,都是尾後迭代器。
  • 迭代器運算子:
1 *iter    返回迭代器iter所指元素的引用2 iter->men    解引用iter並獲得該元素的名為men的成員,相當於(*iter).men3 ++iter    令iter指向容器的下一個元素4 --iter    令iter指向容器的上一個元素5 iter1==iter2    如果兩個迭代器指向的是同一個元素或者指向同一個容器的尾後迭代器,則相等
  • 迭代器的類型:
    • 實際上擁有迭代器的標準庫類型使用iteratorconst_iterator來表示迭代器的類型:
1vector<int>::iterator it;//it可以讀寫vector<int>的元素2string::iterator it2;//it2可以讀寫string對象中的字元3 4vector<int>::const_iterator it3;//it3隻能讀元素,不能寫元素5string::const_iterator it4;//it4隻能讀字元,不能寫字元
    • const_iterator和常量指標差不多,能讀取但不能修改它所指的元素值,而iterator可讀可寫。如果容器或string對象是一個常量,只能使用const_iterator,如果不是常量,那麼既能使用iterator又能使用const_iterator
    • 如果容器或對象只需讀操作而無需寫操作的話最好使用常量類型(const_iterator),為了便於擷取常量迭代器,C++11新引入了兩個新函數,分別是cbegincend,類似於beginend,不同之乎在於只能返回const_iterator.
    • 注意:但凡是使用了迭代器的迴圈體,都不要向迭代器所屬的容器添加元素
  • 迭代器運算:
1iter + n    迭代器加上一個數值仍得一個迭代器,所指位置向前移動n個元素2iter - n    迭代器減去一個數值仍得一個迭代器,所指位置向後移動n個元素3iter += n    等價於iter + n4iter -= n    等價於iter - n5iter1 - iter2    兩個迭代器相減的結果是他們之間距離,其類型是名為difference_type的帶正負號的整數6 >、>=、<、<=    位置離begin近的元素較小

 

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.