C++迭代器使用错误总结
指針和迭代器的區(qū)別:
迭代器:
? ? ? (1)迭代器不是指針,是類模板,表現(xiàn)的像指針。他只是模擬了指針的一些功能,通過重載了指針的一些操作符,->,*,++ --等封裝了指針,是一個(gè)“可遍歷STL( Standard Template Library)容器內(nèi)全部或部分元素”的對(duì)象,?本質(zhì)是封裝了原生指針,是指針概念的一種提升(lift),提供了比指針更高級(jí)的行為,相當(dāng)于一種智能指針,他可以根據(jù)不同類型的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)不同的++,--等操作;
? ? ? (2)迭代器返回的是對(duì)象引用而不是對(duì)象的值,所以cout只能輸出迭代器使用*取值后的值而不能直接輸出其自身。
? ? ? (3)在設(shè)計(jì)模式中有一種模式叫迭代器模式,簡單來說就是提供一種方法,在不需要暴露某個(gè)容器的內(nèi)部表現(xiàn)形式情況下,使之能依次訪問該容器中的各個(gè)元素,這種設(shè)計(jì)思維在STL中得到了廣泛的應(yīng)用,是STL的關(guān)鍵所在,通過迭代器,容器和算法可以有機(jī)的粘合在一起,只要對(duì)算法給予不同的迭代器,就可以對(duì)不同容器進(jìn)行相同的操作。
? ? ? ?(4)在用迭代器執(zhí)行erase,insert等函數(shù)時(shí),迭代器的指針會(huì)被釋放掉,從而不能繼續(xù)使用,如果繼續(xù)使用,則會(huì)報(bào)錯(cuò);
指針:
? ? ? ??指針能指向函數(shù)而迭代器不行,迭代器只能指向容器;指針是迭代器的一種。指針只能用于某些特定的容器;迭代器是指針的抽象和泛化。所以,指針滿足迭代器的一切要求。
? ? ??? 總之,指針和迭代器是有很大差別的,雖然他們表現(xiàn)的行為相似,但是本質(zhì)是不一樣的!一個(gè)是類模板,一個(gè)是存放一個(gè)家伙的地址的指針變量。
?
總結(jié)
以上是生活随笔為你收集整理的C++迭代器使用错误总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言中有bool变量吗?
- 下一篇: 创造与魔法特级宠物粮怎么合成