-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvector.c
More file actions
48 lines (38 loc) · 925 Bytes
/
vector.c
File metadata and controls
48 lines (38 loc) · 925 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "vector.h"
#include <stdlib.h>
struct vector
{
int *buffer;
int size;
int capacity;
};
vector* vector_create(void){
vector* res = malloc(sizeof(vector));
const int cap = 8;
res->buffer = malloc(sizeof(int)*cap);
res->size = 0;
res->capacity = cap;
return res;
}
void vector_delete(vector* vector){
free(vector->buffer);
free(vector);
}
void vector_pushback(vector* vector, int value){
vector->buffer[vector->size] = value;
vector->size++;
if (vector->size >= vector->capacity) {
vector->capacity *= 2;
vector->buffer = realloc(vector->buffer, sizeof(int)*vector->capacity);
}
}
int vector_get(vector* vector, int i){
if (i>=vector->size) return 0;
else return vector->buffer[i];
}
int vector_pop(vector* vector){
return vector->buffer[vector->size--];
}
int vector_size(vector* vector){
return vector->size;
}