diff --git a/header/vectors.h b/header/vectors.h index 44ddb85e31ffd353c2273ee688837af82cde0ada..8c3dfca86a783d4995bea46f38b93eb249ccfe8a 100644 --- a/header/vectors.h +++ b/header/vectors.h @@ -30,6 +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)); +vector 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 bc8f37263f3d2a164089ede0c71ba11e89f0c4ea..01db5a0c5d23162a59ac6de7a1f3ffe386622e17 100644 --- a/src/test_vectors.c +++ b/src/test_vectors.c @@ -59,14 +59,17 @@ int main() } vector_print(test, &print_type); printf("\n"); - + //Test Vector map - vector_map(test, ×_two); - vector_print(test, &print_type); + vector test_2 = vector_map(test, ×_two); + vector_print(test_2, &print_type); + + //Test Vector filter //Test Vector Free vector_free(test); - + vector_free(test_2); + return 0; } diff --git a/src/vectors.c b/src/vectors.c index d5dad3fc2a9c05fc04f308e5b08d37a6e8a3d8e6..92590bb2a5e415a96972390e5c8eb38c82a9e800 100644 --- a/src/vectors.c +++ b/src/vectors.c @@ -137,10 +137,13 @@ void vector_print(vector vec, void (*print)(type)) } } -void vector_map(vector vec, type (*f)(type)) +vector vector_map(vector vec, type (*f)(type)) { + vector new_vec = vector_create(); for (int i = 0; i < vec->length; i++) { - vec->content[i] = f(vec->content[i]); + vector_push(new_vec, f(vec->content[i])); } -} \ No newline at end of file + return new_vec; +} +