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....