再談迭代器

2021-09-08 09:44:22 字數 3788 閱讀 4502

一、插入迭代器

1/**

2解釋三種插入迭代器的區別。

3區別在於插入的元素的位置不同:

4back_inserter,使用push_back實現在容器末端插入。

5front_inserter, 使用push_front實現在容器前端插入。

6inserter,使用insert實現插入,它還帶有第二個實參:指向插入起始位置的迭代器7*/

89 #include 10 #include 11 #include 12 #include 13

14using

namespace

std;

1516

intmain()

17

、iostream迭代器

1/**

2* 功能:讀 cin,直到到達檔案結束或者輸入的不是 int 型的數值為止(其中輸入字元也結束),

3* 讀取的元素將用來構造vec物件4*/

5 #include 6 #include 7 #include 8

9using

namespace

std;

1011

intmain()

12

1/**

2* 3*/

4 #include 5 #include 6 #include 7

8using

namespace

std;910

intmain()

1124

25 system("

pause");

26return0;

27 }

1/**

2*功能:從標準輸入讀取一些數,再將讀取的不重複的數寫到標準輸出3*/

4 #include 5 #include 6 #include 7

8using

namespace

std;910

intmain()

11

1/**

2* 功能:使用copy演算法將乙個檔案的內容寫到標準輸出中。3*/

45 #include 6 #include 7 #include 8 #include 9

10using

namespace

std;

1112

intmain()

1323

24 ostream_iterator outitor(cout, "

"); //

以空格分隔資料

25 istream_iteratorinitor(infile), eof;

26copy(initor, eof, outitor);

2728 infile.close();//

關閉檔案

2930 system("

pause");

31return0;

32 }

1/**

2* 功能:程式設計使用istream_iterator物件從標準輸入讀入一些列整數。使用ostream_iterator物件

3*將其中的奇數寫到乙個檔案中,並在每個寫入值後加乙個空格,同樣將偶數寫到另乙個檔案,

4*每個寫入的值都存放在單獨的行中。5*/

67 #include 8 #include 9 #include 10 #include 11

12using

namespace

std;

1314

intmain()

1528

if(!evenfile)

2933 cout << "

輸入一些整數,ctrl+z結束輸入

"<34 istream_iteratorinitor(cin), eof;

35 ostream_iterator outodditor(oddfile, "");

36 ostream_iterator outevenitor(evenfile, "\n"

);37

while(initor !=eof)

3844 oddfile.close();//

關閉檔案

45evenfile.close();

4647 system("

pause");

48return0;

49 }

、反向迭代器

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

6using

namespace

std;78

intmain()9;

11 vector ivec(ia, ia+10

);12

13//

逆序輸出ivec容器中的元素

14 sort(ivec.rbegin(), ivec.rend());//

從大到小排列

15for(vector::reverse_iterator r_itor = ivec.rbegin(); r_itor != ivec.rend(); ++r_itor)

16 cout << *r_itor << "";

17 cout <18/*

19//普通迭代器做法

20for(vector::iterator itor = ivec.end()-1; itor >= ivec.begin(); --itor)

21cout << *itor << " ";

22cout << endl;

23*/

24 system("

pause");

25return0;

26 }

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;78

intmain()9;

11 list li(ia, ia+sizeof(ia)/sizeof(ia[0

]));

12 list::reverse_iterator r_itor = find(li.rbegin(), li.rend(), 0

);13

if(r_itor !=li.rend())

1417

else

18 cout << "

no element 0

"<19 system("

pause");

20return0;

21 }

1/**

2* 假設有乙個名為line的string物件,儲存以逗號分隔的單詞列表,輸入第乙個單詞和最後乙個單詞

3* 所有反向迭代器都提供成員函式 base轉換

4* 注意:rbegin()與end() 不同 r_comma與r_comma.base() 也不同5*/

6 #include 7 #include 8 #include 9 #include

1011

using

namespace

std;

1213

intmain()

14

c 學習筆記(七) 再談迭代器

容器一般都會提供乙個迭代器,用於跟蹤元素操作。但是其實,標準庫所定義的迭代器不依賴於特定的容器。而容器所提供的迭代器也只是,標準庫提供的一下三種迭代器的一種 1 插入迭代器 這類迭代器與容器繫結在一起,實現在容器中插入元素的功能 2 iostream 迭代器 這類迭代器可與輸入或輸出流繫結在一起,用...

迭代器 反向迭代器

c primer 中文版第四版 第273頁 9.3.2 begin和end成員 begin和end操作產生指向容器內第乙個元素和最後乙個元素的下乙個位置的迭代器,如下所示。這兩個迭代器通常用於標記包含容器中所有元素的迭代範圍。c.begin 返回乙個迭代器,它指向容器c的第乙個元素 c.end 返回...

C 知識點28 使用C 標準庫(再談迭代器)

一 迭代器的種類 c 中的容器以及泛型演算法會大量的使用迭代器 目前已經出現的迭代器有一下幾種 1.輸出迭代器 outputiterator 輸出迭代器類似於輸出流 只能向輸出流中寫入資料 只能向輸出迭代器中寫入資料,輸出迭代器的常用操作如下 2.輸入迭代器 inputiterator 輸入迭代器類...