淺析iterator與指針的差別。本站提示廣大學習愛好者:(淺析iterator與指針的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析iterator與指針的差別正文
1.指針和iterator都支撐與整數停止+,-運算,並且其寄義都是從以後地位向前或許向後挪動n個地位
2.指針和iterator都支撐減法運算,指針-指針獲得的是兩個指針之間的間隔,迭代器-迭代器獲得的是兩個迭代器之間的間隔
3.經由過程指針或許iterator都可以或許修正其指向的元素
經由過程下面這幾點看,二者真的很像,然則二者也有著上面的幾個分歧處所
1.cout操作符可以直接輸入指針的值,然則對迭代器停止在操作的時刻會報錯。經由過程看報錯信息和頭文件曉得,迭代器前往的是對象援用而不是對象的值,所以cout只能輸入迭代器應用*取值後的值而不克不及直接輸入其本身。
2.指針能指向函數而迭代器不可,迭代器只能指向容器
這就解釋了迭代器和指針實際上是完整紛歧樣的概念來的。指針是一種特別的變量,它專門用來寄存另外一變量的地址,而迭代器只是參考了指針的特征停止設計的一種STL接口。
筆者曾在網上看到如許一種說法:迭代器是狹義指針,而指針知足一切迭代器請求。迭代器是STL算法的接口,而指針是迭代器,是以STL算法可使用指針來對基於指針的非STL容器停止操作。
筆者認為下面說法也有幾分事理,然則究竟正不准確就留給看官本身斷定了。然則有一點願望年夜家留意的是:萬萬不要把指針和迭代器弄混了。或許某些編譯器應用指針來完成迭代器以致於有些人會誤認為指針和迭代器是一個概念來的。