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, &times_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