C++容器vector
时间: 2024-08-15 09:03:30 浏览: 32
C++标准库中的`std::vector`是一种动态数组容器,它提供了一种高效的方式存储和管理元素。以下是关于`vector`的一些关键特性:
1. **动态大小**:`vector`可以自动调整其容量以容纳添加的元素,当你试图插入超出当前容量的元素时,它会自动进行扩容。
2. **随机访问**:由于底层是一个连续的内存块,`vector`支持常数时间复杂度的随机访问,通过索引可以直接访问任何一个元素。
3. **范围迭代器**:`vector`提供范围迭代器,使得遍历整个向量非常方便。
4. **安全性**:`push_back()`、`pop_back()`等操作不会导致数据丢失,因为它们会动态分配内存并复制元素。
5. **内置的动态增长策略**:当需要添加更多元素时,`vector`通常采用线性膨胀策略,这可能导致性能瓶颈,尤其是当容器接近满载时。
6. **效率**:`vector`在插入和删除元素中部时效率较低,因为它涉及到大量的元素移动。如果频繁地在两端添加或删除元素,`list`或`deque`可能会更合适。
相关问题
c++容器vector
C++中的容器vector是一个动态数组,它可以存储任意类型的元素。它提供了方便的操作函数,例如在尾部添加元素、在指定位置插入元素、访问元素等。
使用vector需要包含头文件< vector >。以下是一些常见的vector操作示例:
1. 创建一个空的vector:
```cpp std::vector<int> myVector;
```
2. 在尾部添加元素:
```cpp myVector.push_back(10);
myVector.push_back(20);
```
3. 访问元素:
```cpp int firstElement = myVector[0];
int secondElement = myVector.at(1);
```
4. 获取vector的大小:
```cpp int size = myVector.size();
```
5. 在指定位置插入元素:
```cpp myVector.insert(myVector.begin() +2,30);
```
6. 删除指定位置的元素:
```cpp myVector.erase(myVector.begin() +1);
```
7. 清空vector:
```cpp myVector.clear();
```
这只是一些基本操作的示例,vector还提供了许多其他功能,例如排序、查找、重设大小等。你可以查阅C++文档以了解更多信息。
c++中vector容器
以下是关于C++中vector容器的介绍:
1. 定义和初始化vector容器
```cpp
#include <vector>
#include <iostream>
int main() {
// 定义一个整型vector
std::vector<int> vec1;
// 初始化vector并赋值
std::vector<int> vec2 = {1, 2, 3, 4, 5};
// 使用迭代器遍历vector
for (auto it = vec2.begin(); it != vec2.end(); ++it) {
std::cout << *it << " ";
}
return 0;
}
```
2. 向vector容器中添加和删除元素
```cpp
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 在末尾添加元素
vec.push_back(6);
// 删除末尾元素
vec.pop_back();
// 删除指定位置的元素
vec.erase(vec.begin() + 2);
// 清空vector
vec.clear();
return 0;
}
```
3. 传参时使用引用
```cpp
#include <vector>
#include <iostream>
void test(std::vector<int>& nums) {
// 对传入的vector进行操作
for (int num : nums) {
std::cout << num << " ";
}
}
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
test(vec);
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)