Explicação detalhada do iterador C++ STL (iterador)

1. Introdução aos iteradores

Ponteiros podem ser usados ​​para percorrer estruturas de dados com espaço de armazenamento contínuo, mas para espaços de armazenamento não contíguos, você precisa encontrar uma classe que atue como um ponteiro para percorrer estruturas de dados não arranjadas . Portanto, introduzimos o conceito de iterador.

Iterator (Iterator) é um tipo de dados que verifica os elementos no contêiner e percorre os elementos. Iteradores são uma generalização de ponteiros que permitem aos programadores lidar com diferentes estruturas de dados (contêineres) da mesma maneira.

1. Arquivo de cabeçalho

Todos os contêineres têm seus próprios tipos de iterador, portanto, quando você usa iteradores de contêiner genéricos, não precisa incluir um arquivo de cabeçalho especial. No entanto, existem vários iteradores especiais, como iteradores reversos, definidos em <iterator>.

2 tipos de iteradores

Os iteradores são divididos em cinco tipos, a saber: Input iterator (Input iterator), output iterator (Output iterator), forward iterator (Forward iterator), iterador bidirecional (Bidirectional iterator), iterador de acesso aleatório (Random access iterator).

Em segundo lugar, o uso de iteradores de contêiner

Aqui estão alguns exemplos para ilustrar o uso de cada contêiner:

1、vetor

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char* argv[])
{
    // Create and populate the vector
	vector<int> vecTemp;
	for (int i = 0; i<6; i++)
	{
		vecTemp.push_back(i);
	}

    // Display contents of vector
	cout <<"Original deque: ";    
	vector<int>::iterator it;
	for (it = vecTemp.begin(); it!=vecTemp.end(); it++)
	{
		cout <<*it <<" ";
	}

	return 0;
}

C++资料领取进裙:580475042
/*
输出结果:
Original deque: 0 1 2 3 4 5
*/

2, portanto

#include <iostream>
#include <deque>

using namespace std;

int main(int argc, char* argv[])
{
	// Create and populate the deque
	deque<int> dequeTemp;
	for (int i = 0; i<6; i++)
	{
		dequeTemp.push_back(i);
	}

	// Display contents of deque
	cout <<"Original deque: ";
	deque<int>::iterator it;
	for (it = dequeTemp.begin(); it != dequeTemp.end(); it++)
	{
		cout <<*it <<" ";
	}
	cout <<endl;

	return 0;
}

C++资料领取进裙:580475042
/*
输出结果:
Original deque: 0 1 2 3 4 5
*/

3, lista

#include <iostream>
#include <list>

using namespace std;

int main(int argc, char* argv[])
{
	// Create and populate the list
	list<int> listTemp;
	for (int i = 0; i<6; i++)
	{
		listTemp.push_back(i);
	}

	// Display contents of list
	cout << "Original list: ";
	list<int>::iterator it;
	for (it = listTemp.begin(); it != listTemp.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

	// Insert five 9 into the list
	list<int>::iterator itStart = listTemp.begin();
	listTemp.insert(itStart,5,9);

	// Display the result
	cout << "Result of list: ";
	for (it = listTemp.begin(); it != listTemp.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

	return 0;
}

C++资料领取进裙:580475042
/*
输出结果:
Original list: 0 1 2 3 4 5
Result of list: 9 9 9 9 9 0 1 2 3 4 5
*/

4、conjunto

#include <iostream>
#include <set>

using namespace std;

int main(int argc, char* argv[])
{
	// Create and populate the set
	set<char> setTemp;
	for (int i = 0; i<6; i++)
	{
		setTemp.insert('F'-i);
	}

	// Display contents of set
	cout <<"Original set: ";
	set<char>::iterator it;
	for (it = setTemp.begin(); it != setTemp.end(); it++)
	{
		cout <<*it <<" ";
	}
	cout <<endl;

	return 0;
}

C++资料领取进裙:580475042
/*
输出结果:
Original set: A B C D E F
*/

5、mapa

#include <iostream>
#include <map>

using namespace std;

typedef map<int, char> MyMap;

int main(int argc, char* argv[])
{
	// Create and populate the map
	MyMap mapTemp;
	for (int i = 0; i<6; i++)
	{
		mapTemp[i] = ('F'-i);
	}

	// Display contents of map
	cout <<"Original map: " <<endl;
	MyMap::iterator it;
	for (it = mapTemp.begin(); it != mapTemp.end(); it++)
	{
		cout << (*it).first << " --> ";
		cout << (*it).second << std::endl;
	}
	cout <<endl;

	return 0;
}

C++资料领取进裙:580475042
/*
输出结果:
Original map:
0 --> F
1 --> E
2 --> D
3 --> C
4 --> B
5 --> A
*/

Acho que você gosta

Origin blog.csdn.net/QtCompany/article/details/131689161
Recomendado
Clasificación