举一个c++ vector插入元素的例子
时间: 2023-08-02 19:12:33 浏览: 42
以下是一个简单的 C++ vector 插入元素的示例:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec {1, 2, 3, 4, 5};
// 在 vector 的末尾插入一个元素
vec.push_back(6);
// 在 vector 的开头插入一个元素
vec.insert(vec.begin(), 0);
// 在指定位置插入一个元素
vec.insert(vec.begin() + 3, 10);
// 在指定位置插入多个元素
vec.insert(vec.begin() + 2, {7, 8, 9});
// 输出 vector 中的所有元素
for (auto i : vec) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
```
此代码将创建一个包含整数1到5的 vector,然后插入额外的元素。结果输出为:`0 1 2 7 8 9 10 3 4 5 6`。
相关问题
c++ vector 在最后一个元素前insert
C++ 的 vector 类提供了一个 insert() 函数,可以用于在指定位置前插入一个或多个元素。如果要在最后一个元素前插入元素,可以使用 end() 函数返回的迭代器作为插入位置,如下所示:
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec {1, 2, 3, 4};
auto it = vec.end(); // 获取最后一个元素的迭代器
vec.insert(it, 5); // 在最后一个元素前插入 5
for (auto i : vec) {
std::cout << i << ' ';
}
std::cout << '\n';
return 0;
}
```
上述代码将输出:`1 2 3 5 4`。在这个例子中,我们创建了一个包含 1 到 4 四个整数的 vector,然后使用 end() 获取最后一个元素的迭代器,并在该位置前插入了一个值为 5 的元素。最终输出的 vector 中,5 被插入到了最后一个元素 4 的前面。
写一个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 *vec) {
vec->data = NULL;
vec->size = 0;
vec->capacity = 0;
}
void vector_push_back(Vector *vec, int value) {
if (vec->size >= vec->capacity) {
int new_capacity = vec->capacity == 0 ? 1 : vec->capacity * 2;
int *new_data = (int *)realloc(vec->data, new_capacity * sizeof(int));
if (new_data == NULL) {
fprintf(stderr, "Out of memory\n");
exit(1);
}
vec->data = new_data;
vec->capacity = new_capacity;
}
vec->data[vec->size++] = value;
}
int vector_get(Vector *vec, int index) {
if (index < 0 || index >= vec->size) {
fprintf(stderr, "Index out of range\n");
exit(1);
}
return vec->data[index];
}
void vector_set(Vector *vec, int index, int value) {
if (index < 0 || index >= vec->size) {
fprintf(stderr, "Index out of range\n");
exit(1);
}
vec->data[index] = value;
}
void vector_free(Vector *vec) {
free(vec->data);
vec->data = NULL;
vec->size = 0;
vec->capacity = 0;
}
int main() {
Vector vec;
vector_init(&vec);
vector_push_back(&vec, 1);
vector_push_back(&vec, 2);
vector_push_back(&vec, 3);
printf("Size: %d, Capacity: %d\n", vec.size, vec.capacity);
for (int i = 0; i < vec.size; i++) {
printf("%d ", vector_get(&vec, i));
}
printf("\n");
vector_set(&vec, 1, 4);
printf("Size: %d, Capacity: %d\n", vec.size, vec.capacity);
for (int i = 0; i < vec.size; i++) {
printf("%d ", vector_get(&vec, i));
}
printf("\n");
vector_free(&vec);
return 0;
}
```
该程序使用 `struct` 定义了一个动态数组类型 `Vector`,包含了一个指向整型数组的指针、数组的大小、数组的容量等成员。`vector_init` 函数用于初始化数组,`vector_push_back` 函数用于在数组末尾添加元素,`vector_get` 函数用于获取指定位置的元素,`vector_set` 函数用于修改指定位置的元素,`vector_free` 函数用于释放数组的内存空间。在 `main` 函数中,我们首先初始化了一个数组,然后添加了三个元素,打印出数组的大小和容量以及元素内容,接着修改了第二个元素的值,再次打印出数组的大小和容量以及元素内容,最后释放了数组的内存空间。