From ddd6e0f25a8a1aa0ad77aaeeab8757f1350c6ae5 Mon Sep 17 00:00:00 2001 From: Abivarman <abivarman.kandiah@etu.hesge.ch> Date: Thu, 24 Feb 2022 11:25:36 +0100 Subject: [PATCH] add Vector map --- header/vectors.h | 1 + src/test_vectors.c | 12 +++++++++++- src/vectors.c | 8 ++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/header/vectors.h b/header/vectors.h index 629f278..44ddb85 100644 --- a/header/vectors.h +++ b/header/vectors.h @@ -30,5 +30,6 @@ void vector_insert(vector vec, type element, int index); void vector_empty(vector vec); void vector_free(vector vec); void vector_print(vector vec, void (*print)(type)); +void vector_map(vector vec, type (*f)(type)); #endif \ No newline at end of file diff --git a/src/test_vectors.c b/src/test_vectors.c index 96177cc..bc8f372 100644 --- a/src/test_vectors.c +++ b/src/test_vectors.c @@ -11,6 +11,7 @@ #include "../header/vectors.h" void print_type(type val); +int times_two(type a); int main() { @@ -57,8 +58,12 @@ int main() vector_push(test, i); } vector_print(test, &print_type); - + printf("\n"); + //Test Vector map + vector_map(test, ×_two); + vector_print(test, &print_type); + //Test Vector Free vector_free(test); @@ -68,4 +73,9 @@ int main() void print_type(type val) { printf("%d \n", val); +} + +int times_two(type a) +{ + return 2 * a; } \ No newline at end of file diff --git a/src/vectors.c b/src/vectors.c index d732979..d5dad3f 100644 --- a/src/vectors.c +++ b/src/vectors.c @@ -135,4 +135,12 @@ void vector_print(vector vec, void (*print)(type)) { print(vec->content[i]); } +} + +void vector_map(vector vec, type (*f)(type)) +{ + for (int i = 0; i < vec->length; i++) + { + vec->content[i] = f(vec->content[i]); + } } \ No newline at end of file -- GitLab