[C++] Algoritmo STL ⑨ (ejemplo de objeto de función predefinido: ordenar elementos del contenedor de grande a pequeño | algoritmo de clasificación | mayor<T> objeto de función predefinido)





1. Ejemplo de objeto de función predefinido: ordenar los elementos del contenedor de mayor a menor



1. algoritmo de clasificación


La biblioteca de plantillas estándar de C++ (STL, biblioteca de plantillas estándar) proporciona la función de algoritmo de clasificación, que se define en el archivo de encabezado <algoritmo> y es un algoritmo genérico;

El algoritmo de clasificación se utiliza para ordenar elementos en un contenedor . Este algoritmo es muy eficiente y puede ordenar elementos dentro de un rango de iterador determinado , y el orden de clasificación se puede definir en función de una función de comparación especificada por el usuario;

La función de comparación especificada por el usuario es un predicado binario;


El prototipo de función de la regla de clasificación predeterminada del algoritmo std::sort es el siguiente:

template< class RandomIt >  
void sort( RandomIt first, RandomIt last );  
  • Parámetros RandomIt primero, RandomIt último: esta función acepta dos iteradores de acceso aleatorio primero y último , que definen el rango de secuencia que debe ordenarse.Nota: Este rango es un intervalo que se cierra al frente y luego se abre;
  • Reglas de comparación predeterminadas: los elementos en este rango se compararán y ordenarán usando el operador < de forma predeterminada . Si una clase personalizada no implementa la función sobrecargada del operador <, se puede informar un error;

El prototipo de función de la regla de clasificación personalizada del algoritmo std::sort es el siguiente:

template< class RandomIt, class Compare >  
void sort( RandomIt first, RandomIt last, Compare comp );
  • Parámetros RandomIt primero, RandomIt último: esta función acepta dos iteradores de acceso aleatorio primero y último , que definen el rango de secuencia que debe ordenarse; Nota: Este rango es un intervalo que se cierra al frente y luego se abre;
  • Regla de comparación personalizada Comparar parámetro comp: este parámetro es un predicado binario, es decir, un objeto de función que recibe 2 parámetros y devuelve un valor bool; los elementos en este rango se ordenarán usando esta regla de predicado binario;

2. mayor objeto de función predefinida


La biblioteca de plantillas estándar de C++ (STL, biblioteca de plantillas estándar) proporciona el objeto de función predefinido mayor <T> , que es un predicado binario . Con la ayuda de este objeto de función, se pueden comparar dos valores de una manera conveniente para determinar el primer valor ¿Es mayor que el segundo valor?

Este objeto de función se utiliza principalmente en algoritmos STL para controlar el orden de clasificación, las condiciones de búsqueda y otros escenarios;


El objeto de función mayor <T> se define en el archivo de encabezado <funcional> y acepta un parámetro de tipo genérico T, que especifica el tipo de elemento a comparar;

El objeto de función mayor<T> sobrecarga internamente el operador de llamada de función operator(), de modo que los objetos de instancia de esta clase se pueden llamar como funciones ordinarias;





2. Ejemplos de código: objetos de función predefinidos



1. Ejemplos de código


Ejemplo de código:

#include "iostream"
using namespace std;
#include <vector>
#include <algorithm>
#include "functional"

int main() {
    
    

	// 创建一个 set 集合容器
	vector<int> myVector;

	// 向容器中插入元素
	myVector.push_back(9);
	myVector.push_back(5);
	myVector.push_back(2);
	myVector.push_back(7);

	// 向 foreach 循环中传入 Lambda 表达式
	for_each(myVector.begin(), myVector.end(), [](int a) {
    
    
		std::cout << a << " ";
		});
	cout << endl;


	// 将 myVector 容器中的元素按照从大到小的顺序排列
	sort(myVector.begin(), myVector.end(), greater<int>());

	// 向 foreach 循环中传入 Lambda 表达式
	for_each(myVector.begin(), myVector.end(), [](int a) {
    
    
		std::cout << a << " ";
		});
	cout << endl;

	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
	return 0;
};

2. Resultados de la ejecución


Resultados de:

9 5 2 7
9 7 5 2
Presione cualquier tecla para continuar. . .

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/han1202012/article/details/135493770
Recomendado
Clasificación