C++特性:迭代器
1. 迭代器(Iterator)的介紹
背景:指針可以用來遍歷存儲空間連續(xù)的數(shù)據(jù)結(jié)構(gòu),但是對于存儲空間費連續(xù)的,就需要尋找一個行為類似指針的類,來對非數(shù)組的數(shù)據(jù)結(jié)構(gòu)進行遍歷。
定義:迭代器是一種檢查容器內(nèi)元素并遍歷元素的數(shù)據(jù)類型。
迭代器提供對一個容器中的對象的訪問方法,并且定義了容器中對象的范圍。
迭代器(Iterator)是指針(pointer)的泛化,它允許程序員用相同的方式處理不同的數(shù)據(jù)結(jié)構(gòu)(容器)。
(1)迭代器類似于C語言里面的指針類型,它提供了對對象的間接訪問。
(2)指針是C語言中的知識點,迭代器是C++中的知識點。指針較靈活,迭代器功能較豐富。
(3)迭代器提供一個對容器對象或者string對象的訪問方法,并定義了容器范圍。
2. 迭代器和指針的區(qū)別:
容器和string有迭代器類型同時擁有返回迭代器的成員。如:容器有成員begin和end,其中begin成員復(fù)制返回指向第一個元素的迭代器,而end成員返回指向容器尾元素的下一個位置的迭代器,也就是說end指示的是一個不存在的元素,所以end返回的是尾后迭代器。
3. 容器迭代器的使用
每種容器類型都定義了自己的迭代器類型,如vector:vector< int>:: iterator iter;//定義一個名為iter的變量,數(shù)據(jù)類型是由vector< int>定義的iterator 類型。簡單說就是容器類定義了自己的iterator類型,用于訪問容器內(nèi)的元素。每個容器定義了一種名為iterator的類型,這種類型支持迭代器的各種行為。
常用迭代器類型如下:
如上圖所示,迭代器類型主要支持兩類,隨機訪問和雙向訪問。其中vector和deque支持隨機訪問,list,set,map等支持雙向訪問。
1)隨機訪問:提供了對數(shù)組元素進行快速隨機訪問以及在序列尾部進行快速插入和刪除操作。
2)雙向訪問:插入和刪除所花費的時間是固定的,與位置無關(guān)。
4. 迭代器的操作
1、所有迭代器:
2、雙向迭代器:
3、輸入迭代器:
4、輸出迭代器
5、隨機迭代器
到此這篇關(guān)于C++特性:迭代器的文章就介紹到這了,更多相關(guān)C++ 迭代器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VSCode搭建STM32開發(fā)環(huán)境的方法步驟
當(dāng)我們的工程文件比較大的時候,編譯一次代碼需要很久可能會花費到四五分鐘,但是我們用vscode編寫和編譯的話時間就會大大縮減,本文就介紹一下VSCode搭建STM32開發(fā)環(huán)境,感興趣的可以了解一下2021-07-07C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串)
這篇文章主要介紹了C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07