优化容器创建逻辑
This commit is contained in:
@@ -11,6 +11,13 @@
|
||||
#include "vector.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
/**
|
||||
* @brief 创建新的数组容器
|
||||
*
|
||||
* @param elem_size
|
||||
* @param initial_capacity
|
||||
* @return vector_t*
|
||||
*/
|
||||
vector_t *vector_create(size_t elem_size, size_t initial_capacity){
|
||||
vector_t *vec = malloc(sizeof(vector_t));
|
||||
if (!vec) return NULL;
|
||||
@@ -21,13 +28,21 @@ vector_t *vector_create(size_t elem_size, size_t initial_capacity){
|
||||
vec->capacity = initial_capacity > 0 ? initial_capacity : 1;
|
||||
vec->data = malloc(vec->capacity * elem_size);
|
||||
if (!vec->data) {
|
||||
free(vec);
|
||||
free(vec);//内存初始化失败,释放vec
|
||||
vec = NULL; // 确保vec为NULL以避免后续操作出现问题
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return vec;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 销毁容器
|
||||
*
|
||||
* @param vec
|
||||
* @return true
|
||||
* @return false
|
||||
*/
|
||||
bool vector_destroy(vector_t *vec) {
|
||||
if (vec) {
|
||||
if (!vec->data) {//虽然data指针可能为NULL,但内存可以被释放
|
||||
@@ -43,7 +58,7 @@ bool vector_destroy(vector_t *vec) {
|
||||
|
||||
|
||||
/**
|
||||
* @brief 向向量末尾添加元素
|
||||
* @brief 向容器末尾添加元素
|
||||
*
|
||||
* @param vec
|
||||
* @param elem
|
||||
@@ -68,7 +83,7 @@ bool vector_push_back(vector_t *vec, const void *elem){
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief
|
||||
* @brief 从容器尾部删除元素
|
||||
*
|
||||
* @param vec
|
||||
* @return true
|
||||
@@ -77,7 +92,7 @@ bool vector_push_back(vector_t *vec, const void *elem){
|
||||
bool vector_pop_back(vector_t *vec){
|
||||
if (!vec || vec->size == 0) return false; // 检查vec是否为NULL或空
|
||||
|
||||
vec->size--;
|
||||
vec->size--; // 减少元素数量
|
||||
if (vec->size < vec->capacity / 4) {
|
||||
size_t new_capacity = vec->capacity / 2;
|
||||
if (new_capacity < 1) new_capacity = 1; // 确保容量至少为1
|
||||
|
Reference in New Issue
Block a user