C 入門 迭代器及型別推導

2022-05-04 22:33:08 字數 1941 閱讀 1087

迭代器

迭代器 (iterator)是 c++ 程式中常用的一種設計模式,它最重要的作用是為訪問容器提供了統一的介面。

c++ stl 有許多容器,例如 vector、list、deque、map、unordered_map 。

而我們常常對不同的容器有相同的操作,比如在容器中查詢乙個元素、找出滿足條件的所有元素並返回。為了不必為每個容器寫乙個操作函式,我們希望容器提供乙個訪問元素的統一介面,從而復用操作函式。

這個介面就是迭代器。

例子:

1 #include 2 #include 3 #include 4 #include 

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