1. 程式人生 > >C++迭代器(iterator)的簡單使用

C++迭代器(iterator)的簡單使用

迭代器提供對一個容器中的物件的訪問方法,並且定義了容器中物件的範圍。迭代器就如同一個指標。事實上,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;
}