迭代器
迭代器 (iterator)是 c++ 程式中常用的一種設計模式,它最重要的作用是為訪問容器提供了統一的介面。例子:c++ stl 有許多容器,例如 vector、list、deque、map、unordered_map 。
而我們常常對不同的容器有相同的操作,比如在容器中查詢乙個元素、找出滿足條件的所有元素並返回。為了不必為每個容器寫乙個操作函式,我們希望容器提供乙個訪問元素的統一介面,從而復用操作函式。
這個介面就是迭代器。
1 #include 2 #include 3 #include 4 #include5 #include 6
7int
main() ;
1011
//容器 -- 動態陣列 不用指定大小,會根據陣列當前的使用情況進行動態擴容
12//
模板型別
13 std::vectorv;
1415
//插入資料
16 v.push_back(1
);17 v.push_back(2
);18 v.push_back(3
);19
20//
使用迭代器的方式遍歷陣列
21 std::vector::iterator it; //
迭代器,模板類中的內部類
22for(it = v.begin(); it != v.end(); it++)
2526
//統一的遍歷方式 連表
27 std::liststring>l;
28 l.push_back("
hello");
29 l.push_back("
world");
3031 std::liststring>::iterator it2;
32for(it2 = l.begin(); it2 != l.end(); it2++)
3536
return0;
37 }
改進1:
...//統一的遍歷方式 連表
std::liststring>l;
l.push_back(
"hello");
l.push_back(
"world");
//std::list::iterator it2;
//for(it2 = l.begin(); it2 != l.end(); it2++)
//auto型別推導關鍵字 解決書寫過長的迭代器型別的煩惱
for(auto it2 = l.begin(); it2 != l.end(); it2++)
...
改進2:
...//統一的遍歷方式 連表
std::liststring>l;
l.push_back(
"hello");
l.push_back(
"world");
for(std::string
str : l)
...
for(元素型別 元素物件:容器物件)
用元素物件依次結合容器物件中的每乙個元素,每結合乙個元素,執行依次迴圈體,直至容器內的所有元素都被結合完為止.
改進3:
...//統一的遍歷方式 連表
std::liststring>l;
l.push_back(
"hello");
l.push_back(
"world");
for(auto str : l)
...
C 新特性 迭代器及型別推導auto
int main 一旦申請,不在動態擴增 int parry new int 5 容器 動態陣列,不用指定大小,會根據陣列當前動態調整 std vectorv 建立動態陣列,無需宣告大小 v.push back 1 v.push back 2 v.push back 3 v.push back 4 ...
python日誌 推導 迭代器
日誌 importlogging log format asctime s levelname s message s logging.basicconfig level logging.debug,format log format deftest try a int input 請輸入乙個被除數...
Python的推導,迭代器,日誌
推導式包含 列表推導式 字典推導式 集合推導式 巢狀列表推導式 列表 例 names bob tom alice jerry wendy smith print name.upper for name in names if len name 3 輸出 alice jerry wendy smith...