Explicación detallada del iterador STL de C++ (iterador)

1. Introducción a los iteradores

Los punteros se pueden usar para atravesar estructuras de datos con espacio de almacenamiento continuo, pero para espacios de almacenamiento no contiguos, debe encontrar una clase que actúe como un puntero para atravesar estructuras de datos que no sean matrices . Por lo tanto, introducimos el concepto de iterador.

Iterador (Iterator) es un tipo de datos que verifica los elementos en el contenedor y atraviesa los elementos. Los iteradores son una generalización de punteros que permiten a los programadores manejar diferentes estructuras de datos (contenedores) de la misma manera.

1. Archivo de encabezado

Todos los contenedores tienen sus propios tipos de iteradores, por lo que cuando usa iteradores de contenedores genéricos, no necesita incluir un archivo de encabezado especial. Sin embargo, hay varios iteradores especiales, como los iteradores inversos, definidos en <iterador>.

2 tipos de iteradores

Hay cinco tipos de iteradores, a saber: iterador de entrada, iterador de salida, iterador directo, iterador bidireccional, iterador de acceso aleatorio (iterador de acceso aleatorio).

En segundo lugar, el uso de iteradores de contenedores.

Aquí hay algunos ejemplos para ilustrar el uso de cada contenedor:

1, vector

#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, por lo tanto

#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
*/

Supongo que te gusta

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