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