C++迭代器(iterator)的簡單使用
阿新 • • 發佈:2019-01-23
迭代器提供對一個容器中的物件的訪問方法,並且定義了容器中物件的範圍。迭代器就如同一個指標。事實上,C++的指標也是一種迭代器。但是,迭代器不僅僅是指標,因此你不能認為他們一定具有地址值。例如,一個數組索引,也可以認為是一種迭代器。
迭代器有各種不同的建立方法。程式可能把迭代器作為一個變數建立。一個STL容器類可能為了使用一個特定型別的資料而建立一個迭代器。作為指標,必須能夠使用*操作符類獲取資料。你還可以使用其他數學操作符如++。典型的,++操作符用來遞增迭代器,以訪問容器中的下一個物件。如果迭代器到達了容器中的最後一個元素的後面,則迭代器變成past-the-end值。使用一個past-the-end值得指標來訪問物件是非法的,就好像使用NULL或為初始化的指標一樣。
通過程式碼舉個簡單的例子
#include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; int main() { vector<char> v; v.push_back('a'); v.push_back('b'); v.push_back('c'); v.push_back('d'); for (int i = 0; i < 4; i++)//輸出容器內的元素 cout << "v[" << i << "]==" << v[i] << endl; cout << "第三個元素是" << v[2] << endl; vector<char>::iterator p = v.begin();//定義迭代器p初始化為容器起始位置 p++;//將迭代器移向下一個位置 cout << *p << endl; p++; cout << *p << endl; p--;//移向上一個位置 cout << *(p + 2) << endl;//輸出第四個元素 int array[10]; array[5] = 100; int *ip = find(array, array + 10, 100);//find的使用(第一個元素位置,最後一個元素位置,待定位的值) if (ip == array + 10) cout << "not found" << endl; else cout << *ip << "found" << endl; vector<int>::iterator q; vector<int> s(10); int n = 0; for (q =s.begin(); q != s.end(); q++)//使用begin和end來迴圈 *q = n++; for (q = s.begin(); q != s.end(); q++) cout << *q << " "; cout << endl; return 0; }