1、迭代器

C++的標準模板庫(STL)中有容器、演算法和迭代器,其中迭代器是非常重要的;

容器又分為順序容器和關聯容器,每一種容器都有自己的迭代器,但是所有的迭代器的介面都是一樣的,即所有的迭代器的操作方法都是一樣的;

迭代器實際上是一個指標

begin

操作返回一個迭代器,且該迭代器指向容器的第一個資料;

end

是指向最後一個的下一個;

之所以這樣設計end是為了很多情況下程式碼更容易寫;

淺談C++中的迭代器

2、常用的迭代器操作

1)所有容器的迭代器都可進行的操作

*iter 、 ++iter 、 ——iter、 iter1==iter2、 iter1!=iter2

2)vector和deque容器的迭代器可進行的額外操作

iter+n、 iter-n 、 > 、 >= 、 < 、 <=

注:這是因為vector和deque容器實際上是兩個陣列,只有對陣列才能執行額外操作;

3)迭代器範圍

[begin,end)

3、舉例

1)

#include

#include

int main()

{

vector a;

a。push_back(1);

a。push_back(2);

a。push_back(3);

a。push_back(4);

a。push_back(5);

//begin操作返回一個迭代器,且該迭代器指向容器的第一個資料

vector::iterator iter1 = a。begin();

//end是指向最後一個的下一個

vector::iterator iter2 = a。end();

cout << *iter1 << endl;

iter1++;

cout << *iter1 << endl;

vector::iterator first = a。begin();

vector::iterator last = a。begin();

while (first != last)

{

cout << *first << endl;

first++;

}

system(“pause”);

return 0;

}

2)

//尋找容器中是否存在待查整數

bool findInt(vector::iterator beg,vector::iterator end,int ival)

{

while (beg != end)

{

if (*beg == ival)

break;

else

++beg;

}

if (beg != end)

return true;

else

return false;

}

3)

vector::iterator findIte(vector::iterator beg, vector::iterator end, int ival)

{

while (beg != end)

{

if (*beg == ival)

break;

else

++beg;

return beg;

}

}

4)

#include

#include

#include

using namespace std;

int main()

{

vector svec;

string str;

cout << “Enter some strings(Ctrl+Z to end):” << endl;

while (cin >> str)

svec。push_back(str);

for (vector::iterator iter = svec。begin(); iter != svec。end(); ++iter)

{

cout << *iter << endl;

}

system(“pause”);

return 0;

}