第十章 再探迭代器

2021-07-09 23:54:40 字數 1433 閱讀 5722

1.插入迭代器

①back_inserter :插入時呼叫push_back()(容器得支援)

②front_inserter:插入時呼叫push_front()(容器得支援,copy演算法作為目標容器會使序列顛倒)

③inserter:inserter(容器,迭代器(表示插入的位置))

例:it是由inserter生成的迭代器

*it = val ;
相當於

it = c.

insert

(it,val)

;//呼叫容器的insert函式

it++

;//遞增it使它指向原來的元素

2.流迭代器

①輸入流迭代器

istream_iterator < t >

in(流)

; istream_iterator < t > end;

//預設構造則作為尾後值,即容器越界的尾後迭代器

accumulate

(in,end,init_val)

;//in&end當普通迭代器使用

++in,in++

;//表示》讀取下乙個值,*in表示該值

②輸出流迭代器

ostream_iterator < t >

out(流)

;ostream_iterator < t >

out(流,c風格字串(表示每次輸出後追加的東西));

out = var;

//將var輸出到out繫結的流中,相當於

*out++

= var;

//**推薦**,以保持一致

3.反向迭代器

++:會往前移

- -:會往後移

例:"first,middle,last"

找到最後乙個,隔開的字串

it =

find

(line.

crbegin()

, line.

crend()

,', ');

cout<<

string

(line.

crbegin()

, it)

;//輸出tsal

cout<<

string

(it.

base()

, line.

cend()

);//輸出last

通過base將反向迭代器轉換為普通迭代器

第十章 迭代器

迭代器 我們已經知道,可以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別,如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function。這些可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。...

第十章 函式

使用def關鍵字 定義個數可變的位置形參 定義個數可變的關鍵字形參 定義預設值引數 定義個數可變的位置形參 deffun1 args 結果為乙個元組 print args fun1 10,20,30 10,20,30 定義個數可變的關鍵字形參 deffun2 args 結果為乙個字典 print a...

第十章 屬性

z屬性 本章也比較簡單稍作介紹 無參屬性就是我們常見的屬性 可以封裝屬性 以執行緒安全方式訪問 有參屬性就是c 中的所引器 匿名型別 如圖遇到如下 具體點就是 上面的注釋也已經講清楚了,定義的型別之後,構造例項,然後初始化屬性。現在詳細說下 編譯器接收到 上圖 先用var 定義乙個型別,但是不具體指...