Advertisement
Guest User

c vector, v2

a guest
Sep 4th, 2015
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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->base);
  24.     free(vector);
  25. }
  26.  
  27. void vct_push_back(vct* vector, float value)
  28. {
  29.     vector->data[vector->base + (vector->size++)] = value;
  30. }
  31.  
  32. float vct_pop_back(vct* vector)
  33. {
  34.     return vector->data[vector->base + (--vector->size)];
  35. }
  36.  
  37. float vct_pop_front(vct* vector)
  38. {
  39.     return vector->data[(vector->base++)];
  40. }
  41.  
  42. int main()
  43. {
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement