diff --git a/header/vectors.h b/header/vectors.h index 629f278c365f13a0a5d43eb7af457d86c43951a3..44ddb85e31ffd353c2273ee688837af82cde0ada 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 96177ccdcef69a8b520a0d308334ee299fcbfec0..bc8f37263f3d2a164089ede0c71ba11e89f0c4ea 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 d732979f05de8099aa59c18546ec7f865aa8e156..d5dad3fc2a9c05fc04f308e5b08d37a6e8a3d8e6 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