std::vector的使用
时间: 2023-10-17 21:10:16 浏览: 42
std::vector 是 C++ STL(标准模板库)中的一个容器,它提供了动态数组的功能,并且具有自动管理内存、动态扩容等特性,非常方便使用。
下面是 std::vector 的基本使用方法:
1. 头文件引入
```c++
#include <vector>
```
2. 创建 vector 对象
```c++
std::vector<int> vec; // 创建一个空的 vector 对象,存储 int 类型
```
3. 添加元素
```c++
vec.push_back(1); // 在 vector 的末尾添加一个元素
vec.push_back(2);
vec.push_back(3);
```
4. 访问元素
```c++
int value = vec[0]; // 访问 vector 中的第一个元素
int value2 = vec.at(1); // 访问 vector 中的第二个元素
```
5. 修改元素
```c++
vec[0] = 4; // 修改 vector 中的第一个元素
```
6. 删除元素
```c++
vec.pop_back(); // 删除 vector 中的最后一个元素
```
7. 获取 vector 的大小
```c++
int size = vec.size(); // 获取 vector 中的元素个数
```
以上是 std::vector 的基本用法,还有许多其他的操作可以参考 C++ STL 文档进行学习。
相关问题
std::vector使用方法
`std::vector` 是 C++ STL 中的一个容器,用于存储动态数组。它可以自动扩容和缩容,可以在数组的任何位置插入或删除元素。以下是使用 `std::vector` 的一些常见方法:
1. 创建向量
可以使用以下语法创建一个空向量:
```
std::vector<int> vec;
```
也可以使用以下语法创建一个具有初始大小和值的向量:
```
std::vector<int> vec(5, 0); // 创建大小为5的向量,并将每个元素初始化为0
```
2. 访问向量元素
可以使用下标运算符 `[]` 或 `at()` 方法访问向量中的元素。例如:
```
std::vector<int> vec = {1, 2, 3, 4, 5};
int x = vec[2]; // x 等于 3
int y = vec.at(4); // y 等于 5
```
注意,使用 `at()` 方法访问不存在的元素会抛出 `std::out_of_range` 异常。
3. 向向量中添加元素
可以使用 `push_back()` 方法将元素添加到向量的末尾:
```
std::vector<int> vec = {1, 2, 3};
vec.push_back(4);
```
也可以使用 `insert()` 方法在向量的任意位置添加元素:
```
std::vector<int> vec = {1, 2, 3};
auto it = vec.begin() + 1;
vec.insert(it, 4);
```
注意,`insert()` 方法需要传入一个迭代器,指定插入的位置。
4. 从向量中删除元素
可以使用 `pop_back()` 方法从向量的末尾删除元素:
```
std::vector<int> vec = {1, 2, 3};
vec.pop_back();
```
也可以使用 `erase()` 方法从向量的任意位置删除元素:
```
std::vector<int> vec = {1, 2, 3};
auto it = vec.begin() + 1;
vec.erase(it);
```
注意,`erase()` 方法需要传入一个迭代器,指定删除的位置。
5. 获取向量大小和容量
可以使用 `size()` 方法获取向量中元素的数量:
```
std::vector<int> vec = {1, 2, 3};
int n = vec.size(); // n 等于 3
```
可以使用 `capacity()` 方法获取向量的容量:
```
std::vector<int> vec = {1, 2, 3};
int m = vec.capacity(); // m 大于等于 3
```
注意,向量的容量可能会大于元素的数量,因为它预留了一些额外的空间以便于扩容。
std::vector使用什么查表
`std::vector` 是 C++ 标准库中的一个容器类,它使用动态数组实现,用于存储和管理一系列的元素。在 `std::vector` 中,元素是按照线性序列存储的,使用连续的内存块来保存元素。
`std::vector` 并不使用查表来实现,它使用指针算术运算和动态内存分配来管理元素的存储。通常情况下,`std::vector` 内部维护了一个指向存储区域的指针,以及记录当前容器大小和容量的变量。
当需要向 `std::vector` 中添加新元素时,如果当前容器的容量不足,它会进行动态内存分配,重新分配一个更大的内存块,并将原有元素复制到新的内存块中。这样可以保证在添加元素时,`std::vector` 总能提供足够的内存空间。
当需要访问 `std::vector` 中的元素时,可以使用指针算术运算来快速定位到指定位置的元素。由于元素在内存中是连续存储的,因此可以通过指针偏移来直接访问指定位置的元素。
总之,`std::vector` 并不使用查表来实现,而是使用指针算术运算和动态内存分配来管理和访问元素。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)