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 | } |