c++的vector用法
时间: 2023-09-04 16:09:56 浏览: 100
c++中vector的用法详解.docx
C语言中的vector指的是一种动态数组,它可以根据需要自动调整大小。在C语言中,没有直接提供内置的vector数据结构,但我们可以通过手动编写代码来实现类似的功能。
下面是一个简单的示例代码,展示了如何使用结构体来实现一个简单的vector:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int* data;
int size;
int capacity;
} Vector;
void vector_init(Vector* vector) {
vector->data = NULL;
vector->size = 0;
vector->capacity = 0;
}
void vector_push_back(Vector* vector, int element) {
if (vector->size == vector->capacity) {
int new_capacity = (vector->capacity == 0) ? 1 : vector->capacity * 2; int* new_data = (int*)realloc(vector->data, new_capacity * sizeof(int));
if (new_data == NULL) {
printf("Memory allocation failed\n");
return;
}
vector->data = new_data;
vector->capacity = new_capacity;
}
vector->data[vector->size] = element;
vector->size++;
}
void vector_print(const Vector* vector) {
for (int i = 0; i < vector->size; i++) {
printf("%d ", vector->data[i]);
}
printf("\n");
}
void vector_free(Vector* vector) {
free(vector->data);
vector->data = NULL;
vector->size = 0;
vector->capacity = 0;
}
int main() {
Vector myVector;
vector_init(&myVector);
vector_push_back(&myVector, 1);
vector_push_back(&myVector, 2);
vector_push_back(&myVector, 3);
vector_print(&myVector);
vector_free(&myVector);
return 0;
}
```
在上面的代码中,我们定义了一个`Vector`结构体,其中包含一个动态分配的整型数组`data`,以及`size`和`capacity`两个整数值。`vector_init`函数用于初始化vector,`vector_push_back`函数用于向vector尾部添加元素,`vector_print`函数用于打印vector中的元素,`vector_free`函数用于释放vector占用的内存。
在`main`函数中,我们首先通过调用`vector_init`初始化一个vector对象。然后使用`vector_push_back`向vector中依次添加了三个元素。最后,我们调用`vector_print`打印vector中的元素,并通过调用`vector_free`释放vector占用的内存。
运行上面的代码,输出结果为:
```
1 2 3
```
这就是一个简单的使用结构体实现的C语言的vector。需要注意的是,这只是一个简单示例,真实的vector实现可能更加复杂和完善。如果在实际开发中需要使用动态数组,建议使用已经实现和测试过的开源库,如GLib或C++标准库中的vector。
阅读全文