Skip to content
Snippets Groups Projects
Verified Commit cccd3332 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

typos

parent a4876fb1
Branches
No related tags found
No related merge requests found
Pipeline #24255 passed
...@@ -218,22 +218,60 @@ vec3 add(vec3 lhs, vec3 rhs){ ...@@ -218,22 +218,60 @@ vec3 add(vec3 lhs, vec3 rhs){
# Le map # Le map
```c * Exemple d'application
typedef double (*operator)(double);
double *map(operator op, double *tab, size_t size) { ```c
double *res = malloc(sizeof(*res) * size); typedef double (*operator)(double);
for (int i = 0; i < size; ++i) { double *map(operator op, double *tab, size_t size) {
res[i] = op(tab[i]); double *res = malloc(sizeof(*res) * size);
for (int i = 0; i < size; ++i) {
res[i] = op(tab[i]);
}
return res;
} }
return res; double add_one(double val) {
} return val + 1;
double add_one(double val) { }
return val + 1; double sqr(double val){
} return val * val;
double sqr(double lhs){ }
return apply_operator(add_dbl, lhs, rhs); double tab[] = {1.0, 2.0, 3.0};
} double *square = map(sqr, tab, 3);
double tab[] = {1.0, 2.0, 3.0}; double *and_one = map(add_one, square, 3);
double *square = map(sqr, tab, 3); ```
double *and_one = map(add_one, square, 3);
``` # Le map
\ No newline at end of file
* Permettrait le chaînage.
```C
double *sqr_and_one = map(add_one, map(sqr, tab, 3), 3);
```
. . .
* Problème?
. . .
* Allocation dynamique... fuite mémoire.
. . .
* Solution?
. . .
```c
typedef double (*operator)(double);
double *map(operator op, double *tab, size_t size) {
double *res = malloc(sizeof(*res) * size);
for (int i = 0; i < size; ++i) {
res[i] = op(tab[i]);
}
free(tab);
return res;
}
```
* Problème potentiel?
* **Attention au double free!**
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment