C++ Vector详解:存储、删除操作与常用功能

需积分: 13 4 下载量 184 浏览量 更新于2024-09-14 收藏 186KB PDF 举报
在C++编程中,`vector` 是一种非常重要的容器,它提供了一种动态数组的实现,支持动态内存管理,可以存储不同类型的对象。本文将详细介绍如何在C++中有效地使用`vector`,包括其基本概念、声明与初始化、操作方法以及常见用途。 首先,为了在代码中使用`vector`,你需要包含`<vector>`头文件,并可能需要引入`std`命名空间。以下是一些常见的导入方式: ```cpp #include <vector> // 使用using关键字简化命名空间引用 using namespace std; // 全名引用vector<int> std::vector<int> vInts; // 或者,只在需要时使用命名空间 vector<int> vInts; ``` 接下来是`vector`的一些关键函数: 1. **赋值与初始化**: - `c.assign(beg, end)` 和 `c.assign(n, elem)`:前者将一个区间内的数据复制到`vector` `c`中,后者则是创建并填充`n`个`elem`的副本到`c`。 2. **访问元素**: - `c.at(idx)`:返回指定索引`idx`的元素,若索引越界则抛出`out_of_range`异常。 - `c.back()`:获取并返回最后一个元素,不检查其存在性。 - `c.begin()`:返回指向第一个元素的迭代器。 - `c.capacity()`:返回`vector`能容纳的最大元素数量(不包括预留空间)。 - `c.empty()`:判断`vector`是否为空。 - `c.end()`:返回指向最后一个元素之后的迭代器。 3. **元素操作**: - `c.erase(pos)`:删除`pos`处的元素,返回下一个元素的位置。 - `c.erase(beg, end)`:删除`[beg, end)`区间的元素,返回下一个元素的位置。 - `c.front()`:获取并返回第一个元素。 - `c.pop_back()`:移除并返回最后一个元素。 - `c.push_back(elem)`:在末尾添加一个元素。 4. **内存分配与扩展**: - `get_allocator()`:返回`vector`的分配器,用于内存管理。 - `c.insert(pos, elem)`:在指定位置`pos`插入一个元素`elem`,返回插入后的新位置。 - `c.insert(pos, n, elem)`:插入`n`个元素`elem`到`pos`。 - `c.insert(pos, beg, end)`:插入区间`[beg, end)`到`pos`。 5. **其他**: - `c.max_size()`:返回`vector`的最大容量。 - `c.rbegin()`:返回逆序迭代器,从后向前遍历。 - `c.rend()`:返回逆序迭代器的结束位置。 在实际编程中,`vector`常用于存储和操作动态数据集合,比如动态数组,因为它的灵活性和性能优化。理解并熟练运用这些操作有助于你更好地设计和实现高效的C++程序。记得在处理边界条件和异常时要格外小心,以确保代码的健壮性。