C 11 14之STL迭代器用法及概述

2021-10-23 05:43:19 字數 2558 閱讀 6907

迭代器是乙個可遍歷stl容器全部或部分元素的物件(行為類似於指標的物件)

迭代器是用來表現容器中某一位置

迭代器緊密依賴於容器,容器裡定義者迭代器具體型別細節。迭代器和容器緊密相關(繫結到一起的)。

分類依據:迭代器的移動特性以及在這個迭代器上能做的操作

迭代器,行為如指標,到處跳,表示乙個位置,一般分類是依據它的跳躍能力,每個分類是對應乙個struct定義.

這些結構和分類都是有繼承關係的。

1.輸出型迭代器(output iterator) struct output_iterator_tag;

2.輸入型迭代器(input iterator) struct input_iterator_tag;

3.前向迭代器 (forward iterator) struct forward_iterator_tag;

4.雙向迭代器 (bidirectional iterator)struct bidirectional _iterator_tag;

5.隨機訪問迭代器(random-access iterator) random_access_iterator_tag;

大多數容器都是有迭代器的,stack,queue沒有迭代器。

驗證容器的迭代器所屬的種類。

#include

"pch.h"

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

namespace _nmsp1

;//定義乙個容器

for(vector<

int>

::iterator iter = iv.

begin()

; iter != iv.

end();

++iter)

return;}

}namespace _nmsp2

void

_display_category

(bidirectional_iterator_tag mytag)

void

_display_category

(forward_iterator_tag mytag)

void

_display_category

(output_iterator_tag mytag)

void

_display_category

(input_iterator_tag mytag)

template

<

typename t>

void

display_category

(t ite)

;void

func()

//主函式:

}namespace _nmsp3

;for

(auto iter = iv.

begin()

; iter != iv.

end();

++iter)

int abc;

abc =0;

}}intmain()

a)輸出型迭代器 struct output_iterator_tag; 一步一步能往前走,並且能夠通過這個種類的迭代器來改寫容器中的資料;

b)輸入型迭代器:struct input_iterator_tag; 一次乙個以向前的方向來讀取元素,按照這個順序乙個乙個返回元素值;

c)前向迭代器:struct forward_iterator_tag;因為繼承自從input迭代器,因此它能以向前的方向來讀取元素,並且讀取時提供額外保證;

d)雙向迭代器:struct bidirectional_iterator_tag:在前向迭代器基礎之上增加了往回(反向)迭代,也就是迭代位置可以回退,新增加如下操作:

e)隨機訪問迭代器:struct random_access_iterator_tag:在雙向迭代器基礎上又增加了所謂的隨機訪問能力:也就是增減某個偏移量,能夠計算距離,還支援一些關係運算等等;

C 11 14之可變參模板

可變參類模板 variadic template 允許模板中有0到任意個模板引數 t emplate typename.t void myfunc t.ar s myfunc 0 0 myfunc 11 23 2 2 myfunc 14 12.4 nj 3 4 4 ar s 稱為一包或者一堆引數,這...

STL容器和迭代器用法歸納(1)

在我所看到的介紹stl的幾本書和文章裡。開頭總要說stl能節省大量的時間和精力,但很多c 程式設計師確不知道,不會用,或不願意用,因為覺得stl不好理解,不好用,複雜。可能也正如這些書中所說,我也經歷過從不用到用的過程,而我身邊也有人還沒有使用stl。但其實只要我們需要儲存資訊,然後查詢這些資訊並使...

STL容器用法與介紹之vector

a vector是乙個封裝了動態大小陣列的順序容器,並支援反轉 b vector是在堆上分配記憶體,並在記憶體中具有連續的儲存空間,它提供了自動記憶體管理功能,隨著元素的增加或刪除,記憶體會同步進行增大或縮小 c 訪問vector中的元素可以通過元素下標實現隨機訪問,也可以通過迭代器實現順序訪問 d...