本文详细解析了C++标准模板库(STL)中vector容器的使用方法,包括其初始化技巧以及增加、删除、查找和修改元素等常见操作。
### C++ STL 中 Vector 的详解
#### 一、Vector 的初始化方法
在 C++ 的标准模板库(STL)中,`vector` 是一种非常重要的容器类型,它提供了动态数组的功能,可以方便地进行元素的增删操作。下面详细介绍 `vector` 的多种初始化方式。
1. **默认构造函数**
- **定义**:
```cpp
std::vector v;
```
- **示例**:
```cpp
#include
#include
int main() {
std::vector v; 创建一个空的 vector
std::cout << Size of vector v: << v.size() << std::endl;
return 0;
}
```
2. **拷贝构造函数 copy 区间**
- **定义**:
```cpp
std::vector(iter_begin, iter_end);
```
- **示例**:
```cpp
#include
#include
int main() {
std::vector v = {1, 2, 3, 4, 5};
std::vector v2(v.begin(), v.begin() + 3);
for (int num : v2) {
std::cout << num << ;
}
return 0;
}
```
3. **指定数量和元素值的构造函数**
- **定义**:
```cpp
std::vector(n, elem);
```
- **示例**:
```cpp
#include
#include
int main() {
std::vector v(5, 10);
for (int num : v) {
std::cout << num << ;
}
return 0;
}
```
4. **指定数量的构造函数**
- **定义**:
```cpp
std::vector(n);
```
- **示例**:
```cpp
#include
#include
int main() {
std::vector v(5);
for (int num : v) {
std::cout << num << ;
}
return 0;
}
```
5. **拷贝构造函数**
- **定义**:
```cpp
std::vector(const vector& vec);
```
- **示例**:
```cpp
#include
#include
int main() {
std::vector v = {1, 2, 3};
std::vector copyOfV(v);
for (int num : copyOfV) {
std::cout << num << ;
}
return 0;
}
```
#### 二、Vector 的常用操作
6. **插入函数**
- **定义**:
```cpp
iterator insert(const_iterator position, const T& value);
```
- **示例**:
```cpp
#include
#include
int main() {
std::vector v = {1, 2, 3};
v.insert(v.begin(), 0);
for (int num : v) {
std::cout << num << ;
}
return 0;
}
```
7. **尾部添加 `push_back(ele)`**
- **定义**:
```cpp
void push_back(const T& value);
```
- **示例**:
```cpp
#include
#include
int main() {
std::vector v = {1, 2};
v.push_back(3);
for (int num : v) {
std::cout << num << ;
}
return 0;
}
```
8. **尾部删去 `pop_back()`**
- **定义**:
```cpp
void pop_back();
```
- **示例**:
```cpp
#include
#include
int main() {
std::vector v = {1, 2};
v.pop_back();
for (int num : v) {
std::cout << num << ;
}
return 0;
}
```
9. **删除区间**
- **定义**:
```cpp
iterator erase(const_iterator first, const_iterator last);
```
- **示例**:
```cpp
#include
#include
int main() {
std::vector v = {1, 2, 3};
v.erase(v.begin(), v.end());
for (int num : v) {
std::cout << num << ;
}
return 0;
}
```
10. **删除指定位置**
- **定义**:
```cpp
iterator erase(const_iterator position);
```
- **