From 9d853de0f505dca3d0fb5030c26d6b75c5232750 Mon Sep 17 00:00:00 2001
From: Abivarman <abivarman.kandiah@etu.hesge.ch>
Date: Thu, 24 Feb 2022 10:41:52 +0100
Subject: [PATCH] Add vector remove

---
 header/vectors.h   |  1 +
 src/test_vectors.c | 17 ++++++++++++++---
 src/vectors.c      | 16 ++++++++++++++++
 3 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/header/vectors.h b/header/vectors.h
index 0fa1a47..b94c944 100644
--- a/header/vectors.h
+++ b/header/vectors.h
@@ -25,5 +25,6 @@ void vector_push(vector vec, type element);
 type vector_pop(vector vec);
 void vector_set(vector vec, int index, type element);
 type vector_get(vector vec, int index);
+type vector_remove(vector vec, int index);
 
 #endif
\ No newline at end of file
diff --git a/src/test_vectors.c b/src/test_vectors.c
index 960ea89..371d5ee 100644
--- a/src/test_vectors.c
+++ b/src/test_vectors.c
@@ -12,23 +12,34 @@
 
 int main()
 {	
+	//Test Vector create
 	vector test = vector_create();
-
 	printf("Created Vector lenght : %d \n", vector_length(test));
 
+	//Test Vector push
 	vector_push(test, 15);
-
 	printf("Modified Vector lenght : %d \n", vector_length(test));
 
+	//Test Vector pop
 	type val = vector_pop(test);
-
 	printf("Modified Vector lenght : %d and the value we popped : %d \n", vector_length(test), val);
 
+	//Test Vector set and get
 	vector_push(test, 42);
 	vector_set(test, 0, 69);
 	val = vector_get(test, 0);
 
 	printf("Modified Vector lenght : %d and the value we setted : %d \n", vector_length(test), val);
+	val = vector_pop(test);
+
+	//Test Vector remove
+	for (int i = 0; i < 6; i++)
+	{
+		vector_push(test, i);
+	}
+	printf("Value at index 3 : %d \n", vector_get(test, 3));
+	vector_remove(test, 3);
+	printf("New Value at index 3 : %d \n", vector_get(test, 3));
 
 
 
diff --git a/src/vectors.c b/src/vectors.c
index 0a43638..5e564dd 100644
--- a/src/vectors.c
+++ b/src/vectors.c
@@ -77,4 +77,20 @@ type vector_get(vector vec, int index)
 	assert(index < vec->length);
 
 	return vec->content[index];
+}
+
+type vector_remove(vector vec, int index)
+{
+	assert(index < vec->length);
+
+	type tmp = vec->content[index];
+
+	vec->length--;
+
+	for (int i = index; i < vec->length; i++) // Ex : 0 1 2 {3} 4 5  // Index 3 , lenght 6
+	{
+		vec->content[i] = vec->content[i+1]; 
+	}
+
+	return tmp;
 }
\ No newline at end of file
-- 
GitLab