View difference between Paste ID: WspRnFUS and G9h9NWGj
SHOW: | | - or go back to the newest paste.
1
#include <stdlib.h>
2
#include <stdint.h>
3
#include <stdio.h>
4
5
typedef struct vct {
6
    float* data;
7
    size_t base;
8
    size_t capacity;
9
    size_t size;
10
} vct;
11
12
vct* vct_create(size_t capacity)
13
{
14
    vct* vector = malloc(sizeof(vct));
15
    vector->data = malloc(sizeof(float)*capacity);
16
    vector->base = 0;
17
    vector->capacity = capacity;
18
    vector->size = 0;
19
}
20
21
vct vct_destroy(vct* vector)
22
{
23-
    free(vector->data - vector->offset);
23+
    free(vector->data - vector->base);
24
    free(vector);
25
}
26
27-
vct_push_back(vct* vector, float value)
27+
void vct_push_back(vct* vector, float value)
28
{
29-
    vector->data[offset + (++vector->size)] = value;
29+
    vector->data[vector->base + (vector->size++)] = value;
30
}
31
32
float vct_pop_back(vct* vector)
33
{
34-
    return vector->data[vector->offset + (vector->size--)];
34+
    return vector->data[vector->base + (--vector->size)];
35
}
36
37
float vct_pop_front(vct* vector)
38
{
39-
    return vector->data[(vector->offset++)];
39+
    return vector->data[(vector->base++)];
40
}
41
42
int main()
43
{
44-
    
44+
    vct* vector = vct_create(100);
45
46
    for(int i=0; i<10; ++i) {
47
        vct_push_back(vector, i+10.2);
48
    }
49
50
    for(int i=vector->base; i<vector->size; i++) {
51
        printf("%f\n", vector->data[i]);
52
    }
53
    printf("popping: %f\n", vct_pop_back(vector));
54
    printf("popping: %f\n", vct_pop_back(vector));
55
56
    for(int i=vector->base; i<vector->size; i++) {
57
        printf("%f\n", vector->data[i]);
58
    }
59
}