STL之迭代器

2022-08-29 01:09:09 字數 1083 閱讀 2340

除了每個容器定義的迭代器之外,在標準庫標頭檔案iterator中還定義了額外幾種迭代器

1.插入迭代器

插入迭代器是一種迭代器介面卡,它接受乙個容器,返回乙個迭代器,能實現向容器新增資料

插入迭代器有3中型別,都是返回乙個容器的插入迭代器,區別是所插入的位置不同

(1)back_inserter(vec):建立乙個使用push_back()向vec容器插入元素的迭代器,永遠在尾部插入

(2)front_insterer(vec):建立乙個使用push_front()向vec容器插入元素的迭代器,永遠在頭部插入

(3)inserter(vec,vec.begin()):建立乙個使用insert()向vec容器插入元素的迭代器,第二個引數表示乙個迭代器,插入到第二個引數指向的元素之前,它和insert(p,x)的區別是:insert(p,x)在p之前插入,並返回指向先新增元素的迭代器,而這裡永遠在第二個引數之前插入。

2.流迭代器

這些迭代器繫結到輸入輸出流上,可以讀取關聯的io流

(1)istream_iterator《讀取型別》 名稱(關聯流)

例如:istream_iteratormyistream(cin)表示從標準輸入流(鍵盤)讀取資料的迭代器

istream_iteratoreof;表示流的尾後迭代器,可以用這個範圍來讀取cin中該範圍內的資料,對於繫結好流的迭代器,一旦其關聯的流遇到檔案尾或io錯誤,則該迭代器的值就與尾後迭代器相等 

(2)ostream_iterator《讀取型別》 名稱(關聯流,d)

例如:ostream_iteratormyostream(cout,"hello!")表示向標準輸出流(螢幕)寫入資料的迭代器,第二個引數表示每次寫入元素之後,在元素末尾加乙個「hello」字串

3.反向迭代器 reverse_iterator

在容器中從尾元素向首元素移動的迭代器,++操作會移動到前乙個元素,直到移動到首前元素位置

成員函式:base(vec.crend()):會返回vec.crend()對應的普通迭代器,即vec.cbegin()

STL之迭代器

除了為每個容器定義的迭代器之外,標準庫在標頭檔案iterator中還定義了額外幾種迭代器,包括 1 插入迭代器 insert iterator 被繫結到乙個容器上,可用來向容器插入元素。2 流迭代器 stream iterator 被繫結到輸入輸出流,可用來遍歷所關聯的io流。3 反向迭代器 rev...

STL之迭代器

我們知道,迭代器常用來訪問容器中的元素。在使用迭代器的方式上來看,和指標非常的類似,甚至於就已經當作指標來使用了。事實上,迭代器的作用就是為了提供一種訪問資料的方式。容器 container 作為標準模板庫中的乙個核心內容,給我們提供了非常強大的資料結構的支援,以便於我們能夠更加方便 高效的實現我們...

STL之迭代器

1 每一種容器都有自己的迭代器 2 所有的迭代器介面都是一樣的 3 在整個標準庫中,經常使用形參為一對迭代器的建構函式 4 常用的迭代器操作 iter iter iter iter1 iter2,iter1 iter2 5 vector和deque容器的迭代器的額外操作 iter n,iter n,...