1、迭代器iternator:廣義指標。
vector<
double
>
::iternator ptr;
begin():返回指向容器中第乙個元素的迭代器。
end():返回指向超過容器尾的迭代器。
使用超過容器尾的迭代器ptr!=abc.end()
更方便遍歷。
vector<
double
> abc =
;for
(ptr = abc.
begin()
;ptr!=abc.
end(
);ptr++
)
迭代器區間為左閉右開,如[a,a+2)表示a與a+1指向的兩個值。
因此[abc.begin(),abc.end()]包含abc內所有值。
abc.
erase
(abc.
begin()
,abc.
begin()
+2);
2、for_each()函式引數:兩個迭代器,乙個處理函式
for
(ptr = abc.
begin()
;ptr!=abc.
end(
);ptr++
)
替換為:
for_each
(abc.
begin()
,ptr!=abc.
end(
),func)
;
不可改變容器內引數。
3、基於範圍的for迴圈
void
funv
(double
& x)
for(
auto
& x:abc)
可以改變容器內引數,需要傳入引用
1、迭代器end()指向超過容器尾,迭代器區間為左閉右開。
2、for_each()函式不可改變容器內引數。
3、基於範圍的for迴圈可以改變容器內引數。
STL中iterator迭代器
1 標頭檔案 所有容器有含有其各自的迭代器型別 iterator types 所以當你使用一般的容器迭代器時,並不需要含入專門的標頭檔案。不過有幾種特別的迭代器,例如逆向迭代器,被定義於中。2 迭代器型別 迭代器共分為五種,分別為 input iterator output iterator for...
STL中迭代器失效問題
對於vector deque等連續儲存的容器來說,插入元素 insert 或者刪除元素 erase 會導致後邊的迭代器都失效,解決方法是,erase iter 會返回下乙個有效迭代器的值,刪除元素時用將當前迭代器賦值為erase的返回值,系統會自動將迭代器的指向修改的。for iter cont.b...
STL中的迭代器分類
五類迭代器如下 1 輸入迭代器 唯讀,一次傳遞 為輸入迭代器預定義實現只有istream iterator和istreambuf iterator,用於從乙個輸入流istream中讀取。乙個輸入迭代器僅能對它所選擇的每個元素進行一次解析,它們只能向前移動。乙個專門的建構函式定義了超越末尾的值。總是,...