#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char** data;
int size;
int capacity;
} Vector;
void vector_init(Vector* vec) {
vec->data = NULL;
vec->size = 0;
vec->capacity = 0;
}
void vector_push_back(Vector* vec, const char* value) {
if (vec->size >= vec->capacity) {
vec->capacity = (vec->capacity == 0) ? 1 : vec->capacity * 2;
vec->data = (char**)realloc(vec->data, vec->capacity * sizeof(char*));
}
vec->data[vec->size] = (char*)malloc((strlen(value) + 1) * sizeof(char));
strcpy(vec->data[vec->size], value);
vec->size++;
}
int main() {
Vector vec;
vector_init(&vec);
vector_push_back(&vec, "c++");
vector_push_back(&vec, "c");
vector_push_back(&vec, "c#");
vector_push_back(&vec, "java");
vector_push_back(&vec, "python");
vector_push_back(&vec, "php");
vector_push_back(&vec, "rust");
for (int i = 0; i < vec.size; i++) {
printf("%s\n", vec.data[i]);
}
for (int i = 0; i < vec.size; i++) {
free(vec.data[i]);
}
free(vec.data);
return 0;
}
/*
run:
c++
c
c#
java
python
php
rust
*/