為什麼需要「迭代器「型別

2021-10-12 12:22:39 字數 1090 閱讀 2449

c++ vector官方文件中,在進行遍歷操作時往往使用迭代器,而非for迴圈+臨時計數變數count

筆者由此思考迭代器的作用,記錄如下

我們可以先想一想,不使用迭代器進行遍歷操作的壞處是什麼

可以想象到,我們必須定義乙個計數變數,該變數需要通過某種方式獲取容器中元素個數,從而實現遍歷操作

因此,這種方式的最大缺點為:

必須暴露集合物件的內部

也就是說,後續接管**的人員,必須下探容器內部邏輯,才能夠對遍歷操作的相關**進行維護

因為,如果不這樣做的話,將無法確定這個計數變數是囊括所有元素,抑或是只包含了其中的奇數個元素,抑或是以其他方式進行選擇性計數

如果使用迭代器,**將具有一定程度上的松耦合性,易於復用,維護時也不必下探容器內部邏輯

#include

vector<

int> x;

//迭代器

for(std::vector<

int>

::iterator it = x.

begin()

; it != x.

end();

++it)

std::cout <<

' '<<

*it;

//計數器

for(

int i =

0;i) std::cout <<

' '<< x[i]

;

上述**會觸發clang簡潔性警告

更加簡潔(在保證安全的前提下)的做法是使用auto關鍵字

改關鍵字會自動探測變數型別而無需程式設計師指明

#include

vector<

int> x;

//迭代器

for(std::

auto it = x.

begin()

; it != x.

end();

++it)

std::cout <<

' '<<

*it;

為什麼伺服器需要備份?

在雲計算系統中,許多常見的故障可能性,將導致嚴重的資料丟失 軟體故障 應用系統出現錯誤 檔案系統崩潰。今年年中,廣州一區主備兩條運營商網路鏈路同時中斷,導致國內部分使用者出現資源訪問失敗 控制台登入異常,甚至資料完全丟失,便是軟體故障造成的事故。偶然故障 人為失誤 非授權操作等,典型案例如近日國內一...

為什麼需要PKI

為什麼需要pki 隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要pki,pki...

為什麼需要prototype

1.new object var newobj new object newobj.name keti newobj.color red newobj.changecolor function color 這種方法看上去很蠢,所以我們找到另一種方法 使用literal直接建立,看上去要優雅得多 2....