vector类型函数返回
时间: 2025-03-17 20:02:57 浏览: 37
### C++ `vector` 类型相关函数及其返回值详解
#### 1. 基本操作函数
- **`push_back(const T& value)` 和 `emplace_back(Args&&... args)`**
这两个函数用于向容器末尾添加新元素。其中,`push_back` 接受已存在的对象并将其复制到容器中[^4];而 `emplace_back` 则是在容器中直接构造对象[^5]。这两个函数均不返回任何值。
- **`pop_back()`**
删除容器中的最后一个元素,该函数也不返回任何值[^6]。
---
#### 2. 访问元素的函数
- **`at(size_type pos)`**
返回指定位置上的元素引用。如果索引超出范围,则抛出 `std::out_of_range` 异常[^7]。
- **`operator[](size_type pos)`**
同样返回指定位置上的元素引用,但它不会检查越界情况,效率更高但风险更大[^8]。
- **`front()` 和 `back()`**
分别返回第一个和最后一个元素的引用[^9]。
- **`data()`**
返回指向底层数组的第一个元素的指针[^10]。
---
#### 3. 容量管理函数
- **`empty()`**
如果容器为空则返回 `true`,否则返回 `false`[^11]。
- **`size()`**
返回当前存储的有效元素数量[^12]。
- **`capacity()`**
返回当前分配的空间大小(可能大于实际使用的空间)[^13]。
- **`reserve(size_type new_cap)`**
请求更改容量至至少为 `new_cap` 大小。此函数本身无返回值[^14]。
- **`shrink_to_fit()`**
尝试减少内存占用以匹配实际使用量,具体行为依赖于实现版本。同样无返回值[^15]。
---
#### 4. 查找与比较函数
- **`begin()` 和 `end()`**
返回分别指向首元素和尾后一位的迭代器[^16]。
- **`rbegin()` 和 `rend()`**
提供反向访问的支持,返回逆序迭代器[^17]。
- **`cbegin()` 和 `cend()`**
只读模式下的正向迭代器支持[^18]。
- **`crbegin()` 和 `crend()`**
只读模式下的反向迭代器支持[^19]。
---
#### 5. 插入与删除函数
- **`insert(iterator position, const T& value)` 或其他重载形式**
在指定位置之前插入一个或多个元素,并返回指向新插入元素的迭代器[^20]。
- **`erase(iterator position)` 或者 `erase(iterator first, iterator last)`**
删除单个或者区间内的元素,返回指向被删区域之后下一个有效元素的迭代器[^21]。
---
#### 6. 特殊用途函数
- **`swap(vector<T>& other)`**
交换两个相同类型的 `vector` 对象的内容,无返回值[^22]。
- **`clear()`**
清除所有元素,使容器变为空状态,无返回值[^23]。
---
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3};
// 添加元素
vec.push_back(4); // 不返回值
auto it_emplace = vec.emplace_back(5);
// 删除元素
vec.pop_back(); // 不返回值
auto it_erase = vec.erase(vec.begin()); // 返回新的迭代器
// 获取元素
int front_val = vec.front();
int back_val = vec.back();
// 容量查询
size_t sz = vec.size(); // 当前大小
bool is_empty = vec.empty(); // 是否为空
return 0;
}
```
---
阅读全文
相关推荐


















