[C++] Algoritmo STL ⑨ (exemplo de objeto de função predefinido - classificar elementos do contêiner de grande para pequeno | algoritmo de classificação de classificação | maior<T> objeto de função predefinido)





1. Exemplo de objeto de função predefinido - classifique os elementos do contêiner de grande para pequeno



Primeiro, algoritmo de classificação de classificação


A Biblioteca de Modelos Padrão C++ (STL, Biblioteca de Modelos Padrão) fornece a função de algoritmo de classificação, que é definida no arquivo de cabeçalho <algorithm> e é um algoritmo genérico;

O algoritmo de classificação é usado para classificar elementos em um contêiner . Este algoritmo é muito eficiente e pode classificar elementos dentro de um determinado intervalo de iterador , e a ordem de classificação pode ser definida com base em uma função de comparação especificada pelo usuário;

A função de comparação especificada pelo usuário é um predicado binário;


O protótipo da função da regra de classificação padrão do algoritmo std::sort é o seguinte:

template< class RandomIt >  
void sort( RandomIt first, RandomIt last );  
  • RandomIt primeiro, RandomIt últimos parâmetros: Esta função aceita dois iteradores de acesso aleatório first e last , que definem o intervalo de sequência que precisa ser classificado.Nota: Este intervalo é um intervalo frontal fechado e depois aberto;
  • Regras de comparação padrão: Os elementos neste intervalo serão comparados e classificados usando o operador < por padrão . Se uma classe personalizada não implementar a função sobrecarregada do operador <, um erro poderá ser relatado;

O protótipo da função da regra de classificação personalizada do algoritmo std::sort é o seguinte:

template< class RandomIt, class Compare >  
void sort( RandomIt first, RandomIt last, Compare comp );
  • RandomIt primeiro, RandomIt últimos parâmetros: Esta função aceita dois iteradores de acesso aleatório first e last , que definem o intervalo de sequência que precisa ser classificado; Nota: Este intervalo é um intervalo frontal fechado e depois aberto;
  • Regra de comparação personalizada Comparar parâmetro comp: Este parâmetro é um predicado binário, ou seja, um objeto de função que recebe 2 parâmetros e retorna um valor bool; os elementos neste intervalo serão classificados usando esta regra de predicado binário;

2. Objeto de função maior predefinido


A Biblioteca de Modelos Padrão C++ (STL, Biblioteca de Modelos Padrão) fornece o objeto de função predefinido maior<T> , que é um predicado binário . Com a ajuda deste objeto de função, dois valores podem ser comparados de maneira conveniente para determinar o primeiro valor.É maior que o segundo valor;

Este objeto de função é usado principalmente em algoritmos STL para controlar a ordem de classificação, condições de pesquisa e outros cenários;


O objeto de função maior<T> é definido no arquivo de cabeçalho <funcional> e aceita um parâmetro de tipo genérico T, que especifica o tipo de elemento a ser comparado;

O objeto de função maior<T> sobrecarrega internamente o operador de chamada de função operador(), de modo que os objetos de instância desta classe possam ser chamados como funções comuns;





2. Exemplos de código - objetos de função predefinidos



1. Exemplos de código


Exemplo 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 execução


Resultados do:

9 5 2 7
9 7 5 2
Pressione qualquer tecla para continuar. . .

Insira a descrição da imagem aqui

Acho que você gosta

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