[C++] Algorithme STL ⑨ (exemple d'objet de fonction prédéfini - trier les éléments du conteneur de grand à petit | trier l'algorithme de tri | plus grand<T> objet de fonction prédéfini)





1. Exemple d'objet fonction prédéfini - trier les éléments du conteneur de grand à petit



1. trier l'algorithme de tri


La bibliothèque de modèles standard C++ (STL, Standard Template Library) fournit la fonction d'algorithme de tri, qui est définie dans le fichier d'en-tête <algorithm> et est un algorithme générique ;

L'algorithme de tri est utilisé pour trier les éléments dans un conteneur.Cet algorithme est très efficace et peut trier les éléments dans une plage d'itérateur donnée , et l'ordre de tri peut être défini en fonction d'une fonction de comparaison spécifiée par l'utilisateur;

La fonction de comparaison spécifiée par l'utilisateur est un prédicat binaire ;


Le prototype de fonction de la règle de tri par défaut de l'algorithme std::sort est le suivant :

template< class RandomIt >  
void sort( RandomIt first, RandomIt last );  
  • Paramètres RandomIt first, RandomIt last : Cette fonction accepte deux itérateurs à accès aléatoire first et last , qui définissent la plage de séquence qui doit être triée. Remarque : Cette plage est un intervalle fermé puis ouvert ;
  • Règles de comparaison par défaut : les éléments de cette plage seront comparés et triés à l'aide de l'opérateur < par défaut . Si une classe personnalisée n'implémente pas la fonction surchargée de l'opérateur <, une erreur peut être signalée ;

Le prototype de fonction de la règle de tri personnalisée de l'algorithme std::sort est le suivant :

template< class RandomIt, class Compare >  
void sort( RandomIt first, RandomIt last, Compare comp );
  • Paramètres RandomIt first, RandomIt last : Cette fonction accepte deux itérateurs à accès aléatoire first et last , qui définissent la plage de séquence qui doit être triée ; Remarque : Cette plage est un intervalle fermé puis ouvert ;
  • Règle de comparaison personnalisée Comparer le paramètre comp : Ce paramètre est un prédicat binaire, c'est-à-dire un objet fonction qui reçoit 2 paramètres et renvoie une valeur booléenne ; les éléments de cette plage seront triés à l'aide de cette règle de prédicat binaire ;

2. Objet fonctionnel prédéfini plus grand


La bibliothèque de modèles standard C++ (STL, Standard Template Library) fournit l'objet de fonction prédéfini supérieur<T> , qui est un prédicat binaire . À l'aide de cet objet de fonction, deux valeurs peuvent être comparées de manière pratique pour déterminer la première valeur. Est-elle supérieure à la deuxième valeur ?

Cet objet fonction est principalement utilisé dans les algorithmes STL pour contrôler l'ordre de tri, les conditions de recherche et d'autres scénarios ;


L'objet fonction Greater<T> est défini dans le fichier d'en-tête <Functional>. Il accepte un paramètre de type générique T, qui spécifie le type d'élément à comparer ;

L'objet fonction Greater<T> surcharge en interne l'opérateur d'appel de fonction Operator(), de sorte que les objets d'instance de cette classe peuvent être appelés comme des fonctions ordinaires ;





2. Exemples de code - objets fonction prédéfinis



1. Exemples de codes


Exemple de code :

#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. Résultats d'exécution


Résultats du :

9 5 2 7
9 7 5 2
Appuyez sur n'importe quelle touche pour continuer . . .

Insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/han1202012/article/details/135493770
conseillé
Classement