Skip to content
Snippets Groups Projects
Commit 882ee871 authored by CHAMONT David's avatar CHAMONT David
Browse files

details

parent 99a3e9c8
No related branches found
No related tags found
1 merge request!7Recommandations plus précises pour la compil
......@@ -20,8 +20,8 @@ Le C++ permet d'utiliser une fonction comme argument d'une autre fonction.
Parfois, cette fonction est triviale, ne va servir qu'une fois, et il est
fastidieux et "encombrant" de devoir la déclarer.
Ci-dessous, l'implémentation classique d'une fonction `applique` qui applique
une fonction `affiche*` à toutes les valeurs d'une collection.
Ci-dessous, l'implémentation classique d'une fonction `applique()` qui applique
une fonction `affiche()` à toutes les valeurs d'une collection.
```c++
// Fichier lbd_motivation_1.cpp
......@@ -50,13 +50,17 @@ int main()
}
```
Essayez d'exécuter ce code au sein de la machine docker `gcc 6.1` :
Placez le code ci-dessus dans un fichier `lbd_motivation_1.cpp` sur votre ordinateur
portable, dans un répertoire de votre choix, que nous appelerons <TRAVAIL>. Vous pouvez
aussi récupérer ce fichier déjà prêt à l'adresse internet donnée au début de ce tutoriel.
Essayez de compiler et d'exécuter ce code au sein d'une machine docker `gcc 6.1` :
```
> docker pull gcc 6.1
> docker run -it -v `pwd`:/home/<USER>/Piscine gcc:6.1 /bin/bash
> docker run -it -v <TRAVAIL>:/home/<USER>/Piscine gcc:6.1 /bin/bash
> cd /home/<USER>/Piscine
> g++ -std=c++11 lbd_motivation_1.cpp -o lbd_motivation_1
> ./lbd_motivation_1
> g++ -std=c++11 lbd_motivation_1.cpp -o lbd_motivation_1.exe
> ./lbd_motivation_1.exe
```
Avec C++11 apparait la possibilité d'écrire directement la fonction là ou elle est
......@@ -149,7 +153,7 @@ int main()
}
```
En réalité, le compilateur se permet souvent de déuire le type au-delà de la spécification
En réalité, le compilateur se permet souvent de déduire le type au-delà de la spécification
stricte de C++11, et C++14 relâche certaines contraintes, en autorisant notamment les instructions
multiples, du moment que toutes les instructions `return` retournent des expressions du
même type. Il est donc peu probable que vous soyez obligés de préciser le type de retour,
......@@ -321,7 +325,7 @@ int main()
}
```
Ci-dessous, pour démontrer que la variable capturée est *copiée*, on stocke la lambda
Ci-dessous, pour démontrer que la variable capturée est **copiée**, on stocke la lambda
dans une variable (de type `std::function<>`), afin de pouvoir la réappeler après avoir
modifier la variable originale, et on constatera que notre lambda renvoit toujours le
même résultat, indépendamment de la valeur courante de m.
......@@ -451,7 +455,7 @@ int main()
}
```
Retournons aux lamndas : vous pouvez également décider de capturer tout ce
Retournons aux lambdas : vous pouvez également décider de capturer tout ce
qui peut l'être sans discernement, à l'aide de la notation "[=]" pour le faire par
valeur, ou "[&]" pour le faire par référence.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment