1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hevake_lcj-ptr_vector

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 2.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 01:14 11cd052

PtrVector

PtrVector — это простой контейнер на основе указателей, реализованный на языке C и имитирующий std::vector в C++.
Он помогает легко решать проблемы управления объектами в C, где нет встроенной поддержки контейнеров.

Основные интерфейсы контейнера PtrVector:

1. Создание, копирование, фильтрация и уничтожение

PtrVector* PtrVector_Create(int reserved_size);
PtrVector* PtrVector_Clone(const PtrVector* ptr);
PtrVector* PtrVector_Filter(PtrVector* vec, PtrVectorCondFunc cond_func, void* cond_data);
void PtrVector_Destory(PtrVector* vec, PtrVectorFreeFunc free_func);

2. Получение количества элементов, ёмкости и зарезервированной ёмкости

size_t PtrVector_Size(const PtrVector* vec);
size_t PtrVector_Capacity(const PtrVector* vec);
size_t PrtVector_Reserve(PtrVector* vec, size_t new_size);

3. Очистка, добавление, удаление последнего элемента, вставка, удаление, замена и получение элемента

void PtrVector_Clear(PtrVector* vec, PtrVectorFreeFunc free_func);
bool PtrVector_PushBack(PtrVector* vec, void* item);
void* PtrVector_PopBack(PtrVector* vec);
bool PtrVector_InsertAt(PtrVector* vec, void* item, int pos);
void* PtrVector_RemoveAt(PtrVector* vec, int pos);
void* PtrVector_ReplaceAt(PtrVector* vec, int pos, void* new_item);
void* PtrVector_GetAt(PtrVector* vec, int pos);

4. Поиск, подсчёт, перебор, условный перебор и условное удаление

int PtrVector_CountIf(PtrVector* vec, PtrVectorCondFunc cond_func, void* cond_data);
int PtrVector_Find(PtrVector* vec, PtrVectorCondFunc cond_func, void* cond_data, int start_pos);
void PtrVector_Foreach(PtrVector* vec, PtrVectorHandleFunc handle_func, void* handle_data);
int PtrVector_ForeachIf(PtrVector* vec, PtrVectorCondFunc cond_func, void* cond_data,
                        PtrVectorHandleFunc handle_func, void* handle_data);
int PtrVector_RemoveIf(PtrVector *vec, PtrVectorCondFunc cond_func, void* cond_data,
                       PtrVectorFreeFunc free_func);

Добро пожаловать!

Обратная связь

Email: hevake_lcj@126.com
QQ: 527020730
WeChat: hevake_lee

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hevake_lcj-ptr_vector.git
git@api.gitlife.ru:oschina-mirror/hevake_lcj-ptr_vector.git
oschina-mirror
hevake_lcj-ptr_vector
hevake_lcj-ptr_vector
master