Outils d'utilisateurs

Outils du Site


predicats

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

predicats [2016/03/28 04:47]
gbdivers
predicats [2019/02/21 23:04] (Version actuelle)
alavida Corps de la fonction lambda est entre les accolades et non entre les crochets
Ligne 3: Ligne 3:
  
  
-====== Les foncteurs ======+====== Les foncteurs et fonctions lambdas ======
  
 __foncteur ? fonction objet ? opérateur ? autre ? __ __foncteur ? fonction objet ? opérateur ? autre ? __
Ligne 23: Ligne 23:
 Fondamentalement, cet algorithme fonctionne de la façon suivante : il parcourt les éléments de la collection et réalise des tests de comparaison par paire d'éléments. Pour faire cette comparaison, l'algorithme utilise l'opérateur de comparaison ''<'' sur les éléments. Par exemple, pour faire le tri d'un tableau d'entiers (''vector<int>''), l'algorithme réalise des comparaisons d'entiers (''valeur 1 < valeur 2''). Fondamentalement, cet algorithme fonctionne de la façon suivante : il parcourt les éléments de la collection et réalise des tests de comparaison par paire d'éléments. Pour faire cette comparaison, l'algorithme utilise l'opérateur de comparaison ''<'' sur les éléments. Par exemple, pour faire le tri d'un tableau d'entiers (''vector<int>''), l'algorithme réalise des comparaisons d'entiers (''valeur 1 < valeur 2'').
  
-Dit autrement, cela veut dire que si on utilise un ''vector<un_type>'', il faut que la comparaison ''<'' ait un sens pour ce type ''un-type'' (ce qui sera le cas avec la majorité des types de base du C++).+Dit autrement, cela veut dire que si on utilise un ''vector<un_type>'', il faut que la comparaison ''<'' ait un sens pour ce type ''un_type'' (ce qui sera le cas avec la majorité des types de base du C++).
  
 On dit que l'opérateur ''<'' est le prédicat utilisé par l'algorithme de trie ''std::sort''. Plus généralement, un prédicat est une expression qui retourne un booléen (''true'' ou ''false''). Les différents algorithmes de la bibliothèque standard n'utilisent pas tous l'opérateur ''<'', certains utilisent l'opérateur d'égalité ''=='', d'autres n'utilisent pas de prédicat. On dit que l'opérateur ''<'' est le prédicat utilisé par l'algorithme de trie ''std::sort''. Plus généralement, un prédicat est une expression qui retourne un booléen (''true'' ou ''false''). Les différents algorithmes de la bibliothèque standard n'utilisent pas tous l'opérateur ''<'', certains utilisent l'opérateur d'égalité ''=='', d'autres n'utilisent pas de prédicat.
Ligne 164: Ligne 164:
 Il est important que vous sachiez créer des fonctions, c'est un point fondamental en C++, vous les utiliserez dans tous vos codes. Et plus important, ce qui sera fondamental est de savoir découper correctement les problèmes complexes en fonctions plus simples. Ce chapitre ne sera pas suffisant pour étudier toutes les possibilités offertes par les fonctions, nous reviendrons dessus en détail par la suite. Cette partie se focalise sur l'utilisation simple des fonctions lambdas avec les algorithmes de la bibliothèque standard. Il est important que vous sachiez créer des fonctions, c'est un point fondamental en C++, vous les utiliserez dans tous vos codes. Et plus important, ce qui sera fondamental est de savoir découper correctement les problèmes complexes en fonctions plus simples. Ce chapitre ne sera pas suffisant pour étudier toutes les possibilités offertes par les fonctions, nous reviendrons dessus en détail par la suite. Cette partie se focalise sur l'utilisation simple des fonctions lambdas avec les algorithmes de la bibliothèque standard.
  
-Les fonctions lambdas sont une technique issue de la programmation fonctionnelle. Vous avez déjà utiliser des fonctions (membres ou libres) et vous avez déjà défini une fonction : la fonction ''main''. Pour rappel, une fonction permet de réaliser une tâche particulière et est constituée de :+Les fonctions lambdas sont une technique issue de la programmation fonctionnelle. Vous avez déjà utilisé des fonctions (membres ou libres) et vous avez déjà défini une fonction : la fonction ''main''. Pour rappel, une fonction permet de réaliser une tâche particulière et est constituée de :
  
   * un nom de fonction (''main'') ;   * un nom de fonction (''main'') ;
Ligne 218: Ligne 218:
 </code> </code>
  
-Le corps de la fonction lambda (entre les crochets) peut contenir plusieurs lignes (séparées par un point-virgule), déclarer des variables, appeler d'autres fonctions, etc. Bref, vous pouvez mettre dans le corps d'une fonction lambda toutes les instructions que vous souhaitez.+Le corps de la fonction lambda (entre les accolades) peut contenir plusieurs lignes (séparées par un point-virgule), déclarer des variables, appeler d'autres fonctions, etc. Bref, vous pouvez mettre dans le corps d'une fonction lambda toutes les instructions que vous souhaitez.
  
 Pour écrire une fonction lambda qui prend deux paramètres, compare les valeurs et retourne un booléen, on peut donc écrire : Pour écrire une fonction lambda qui prend deux paramètres, compare les valeurs et retourne un booléen, on peut donc écrire :
predicats.1459133247.txt.gz · Dernière modification: 2016/03/28 04:47 par gbdivers