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){
# Le map
```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]);
* Exemple d'application
```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]);
}
return res;
}
return res;
}
double add_one(double val) {
return val + 1;
}
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 *and_one = map(add_one, square, 3);
```
\ No newline at end of file
double add_one(double val) {
return val + 1;
}
double sqr(double val){
return val * val;
}
double tab[] = {1.0, 2.0, 3.0};
double *square = map(sqr, tab, 3);
double *and_one = map(add_one, square, 3);
```
# Le map
* 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