Как вы уже догадались, будет гораздо больше работы, если вы привыкли к C ++ и хотите перейти на C.
Для ваших векторов обычным подходом является использование связанного списка s, когда вы хотите динамически подобную массиву структуру. Хотя это не то же самое, что вектор - O (1) доступ здесь по сравнению с O (n) в обычном связанном списке - обычно это "делает свою работу" Альтернативно: не используйте динамический массив. Множество ситуаций может обойтись с помощью фиксированного массива и константы в стиле MAX_ARRAY. Для v0.2 как минимум: -)
Для строк вы, вероятно, получите что-то вроде:
struct string {
char *buf;
size_t length;
}
Наличие большего количества полей для учета выделенного буфера в сравнении с фактическим используемым буфером и т. Д. Затем целый ряд подпрограмм для добавления в строку, освобождения ее, копирования другой строки и т. Д.
Стеки могут быть реализованы в виде связанного списка или массива.
Вы заметили образец? Информатика 101. Множество изобретений колеса. Преимущество состоит в том, что вы можете оптимизировать структуры данных для вашей программы. Недостатки в том, что вам, вероятно, придется написать целый набор кода, чтобы вернуться туда, где вы сейчас находитесь. И вам понадобится гораздо больше юнит-тестов.