標籤:ios 它的 修改 ++ 讀取 tor r++ const clu
其實本來是想鞏固一下基礎從高精度開始再看一遍,結果突然看到string覺得有必要加強一下,於是我就學習了一下迭代器,,,
迭代器(iterator)是一種檢查容器內元素並遍曆元素的資料類型。
(1) 每種容器類型都定義了自己的迭代器類型,如vector:
vector<int>::iterator iter;這條語句定義了一個名為iter的變數,它的資料類型是由vector<int>定義的iterator類型。
(2) 使用迭代器讀取vector中的每一個元素:
vector<int> ivec(10,1);
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)
{
*iter=2; //使用 * 訪問迭代器所指向的元素
}
const_iterator:
只能讀取容器中的元素,而不能修改。
for(vector<int>::const_iterator citer=ivec.begin();citer!=ivec.end();citer++)
{
cout<<*citer;
//*citer=3; error
}
vector<int>::const_iterator 和 const vector<int>::iterator的區別
const vector<int>::iterator newiter=ivec.begin();
*newiter=11; //可以修改指向容器的元素
//newiter++; //迭代器本身不能被修改
(3) iterator的算術操作:
iterator除了進行++,--操作,可以將iter+n,iter-n賦給一個新的iteraor對象。還可以使用一個iterator減去另外一個iterator.
const vector<int>::iterator newiter=ivec.begin();
vector<int>::iterator newiter2=ivec.end();
cout<<"\n"<<newiter2-newiter;
一個很典型使用vector的STL程式:
1 #include <vector>
2 #include <iostream>
3
4 using namespace std;
5
6 int main() {
7 vector<int> ivec;
8 ivec.push_back(1);
9 ivec.push_back(2);
10 ivec.push_back(3);
11 ivec.push_back(4);
12
13 for(vector<int>::iterator iter = ivec.begin();1. iter != ivec.end(); ++iter)
14 cout << *iter << endl;
15 }
C++ iterator(轉)