C 標準庫之迭代器

2022-07-13 06:12:09 字數 1890 閱讀 3996

迭代器是對指標進行進一步抽象的產物。

迭代器是遍歷所有容器(序列)/流的統一介面,是標準庫泛形演算法的基礎。

迭代器根據其能力分為五種:

category

properties

valid expressions

all categories

copy-constructible

, copy-assignable and destructible

x b(a);

b = a;

can be incremented

++a

a++

random access

bidirectional

forward

input

supports equality/inequality comparisons

a == b

a != b

can be dereferenced as an rvalue

*aa->m

output

can be dereferenced as an lvalue

(only for mutable iterator types)

*a = t

*a++ = t

default-constructible

x a;

x()multi-pass: neither dereferencing nor incrementing affects dereferenceability

multi-pass是指,迭代器不管進行多少次自增及解引用,都不會使得其指過的物件無法訪問。

can be decremented

--aa--

*a--

supports arithmetic operators + and -

a + n

n + a

a - n

a - b

supports inequality comparisons (<, >, <= and >=) between iterators

a < b

a > b

a <= b

a >= b

supports compound assignment operations += and -=

a += n

a -= n

supports offset dereference operator ()

a[n]

it跳轉到與原始指向相隔n的另乙個元素。it為雙向迭代器、隨機訪問的情況下n可以為負數,否則n只能為正數。表示的概念為it+=n

計算 first 與 last 之間的迭代器個數

表示的概念為 it - n

表示的概念為 it + n

生成輸出迭代器,*it = x 呼叫container.push_back(x)實現

生成輸出迭代器,*it = x 呼叫container.push_front(x) 實現

生成輸出迭代器,*it = x 呼叫container.insert(it,x)實現

生成輸入迭代器,將迭代器包裝成move_iterator。*it = std::move(*it)

將未初始化的記憶體包裝成輸出迭代器,使其可以像已經初始化的記憶體一樣呼叫 *it=x

iterator_traits::value_type

iterator_traits::reference

iterator_traits::pointer

iterator_traits::difference_type

iterator_traits::iterator_category

C 標準庫 迭代器

迭代器是乙個 可遍歷stl容器內全部或部分元素 的物件。乙個迭代器用來指出容器中的乙個特定位置。operator 返回當前位置上的元素值 operator 和operator 判斷兩個迭代器是否指向同意位置 operator 為迭代器賦值。因為每個容器選擇的資料結構不同,所以每一種容器都必須提供自己...

C 標準庫 Reverse(逆向)迭代器

reverse 逆向 迭代器 reverse迭代器是一種配接器,重新定義遞增遞減運算,使其行為正好倒置,這樣使迭代器以逆向來處理元素。rbegin 傳回逆向遍歷的第乙個元素,也就是實際上最後乙個元素的位置 rend 傳回逆向遍歷時最後乙個元素的下乙個位置,也就是實際上第乙個元素的前乙個位置 示例 i...

C 標準庫vector以及迭代器

今天看c 的書,出現了乙個新的概念,容器vector以及容器迭代器。vector是同一種物件的集合,每個物件都有乙個對應的整數索引值。和string物件一樣,標準庫將負責管理與儲存元素相關的類存。引入標頭檔案 include 1 vectorv1 vector儲存型別為t的物件。預設建構函式,v1為...