淺談C++中的迭代器
1、迭代器
C++的標準模板庫(STL)中有容器、演算法和迭代器,其中迭代器是非常重要的;
容器又分為順序容器和關聯容器,每一種容器都有自己的迭代器,但是所有的迭代器的介面都是一樣的,即所有的迭代器的操作方法都是一樣的;
迭代器實際上是一個指標
begin
操作返回一個迭代器,且該迭代器指向容器的第一個資料;
end
是指向最後一個的下一個;
之所以這樣設計end是為了很多情況下程式碼更容易寫;
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。push_back(1);
a。push_back(2);
a。push_back(3);
a。push_back(4);
a。push_back(5);
//begin操作返回一個迭代器,且該迭代器指向容器的第一個資料
vector
//end是指向最後一個的下一個
vector
cout << *iter1 << endl;
iter1++;
cout << *iter1 << endl;
vector
vector
while (first != last)
{
cout << *first << endl;
first++;
}
system(“pause”);
return 0;
}
2)
//尋找容器中是否存在待查整數
bool findInt(vector
{
while (beg != end)
{
if (*beg == ival)
break;
else
++beg;
}
if (beg != end)
return true;
else
return false;
}
3)
vector
{
while (beg != end)
{
if (*beg == ival)
break;
else
++beg;
return beg;
}
}
4)
#include
#include
#include
using namespace std;
int main()
{
vector
string str;
cout << “Enter some strings(Ctrl+Z to end):” << endl;
while (cin >> str)
svec。push_back(str);
for (vector
{
cout << *iter << endl;
}
system(“pause”);
return 0;
}