C++标准模板库vector详解及使用示例

需积分: 10 5 下载量 104 浏览量 更新于2024-09-12 收藏 93KB PDF 举报
"C++中vector使用范例" C++中的`vector`是一个强大的容器,它在标准模板库(STL)中扮演着重要的角色。`vector`是一个动态数组,允许在运行时改变其大小,提供了许多便利的功能。下面将详细讨论`vector`的基本使用和一些高级特性。 首先,`vector`的创建和初始化可以通过指定元素数量和类型来完成。例如,创建一个能存储100个整数的`vector`: ```cpp vector<int> vecMyHouse(100); // 创建一个包含100个默认值(int的零值)的vector ``` `vector`可以像普通数组那样通过索引进行访问和修改元素: ```cpp vecMyHouse[50] = 1024; // 访问并修改第50个元素 ``` `push_back()`函数用于在`vector`的末尾添加元素: ```cpp for (int i = 0; i < 25; i++) { vecMyHouse.push_back(1); // 向vector末尾添加25个1 } ``` `resize()`函数可以改变`vector`的大小,并可选地提供新元素的初始值: ```cpp vecMyHouse.resize(400); // 将vector的大小扩展到400个元素,原有的元素保持不变 ``` `vector`可以存储任何类型的对象,包括自定义的类类型: ```cpp class Cmyclass {}; // 自定义类 vector<Cmyclass> vecMyClass; // 创建存储Cmyclass对象的vector ``` 初始化`vector`时可以提供初始值: ```cpp vector<int> vecMyHouse(100, 0); // 创建一个100个元素的vector,所有元素初始值为0 ``` 复制`vector`也很简单: ```cpp vector<int> myVec; myVec = vecMyHouse; // 复制vecMyHouse的内容到myVec ``` 要使用`vector`,首先需要包含头文件`<vector>`,并可以使用命名空间`std`: ```cpp #include <vector> // 使用方法1:明确指定std命名空间 using std::vector; // 使用方法2:使用全局命名空间std using namespace std; // 使用方法3:每次使用vector时指定std命名空间 std::vector<int> myHouse; ``` `vector`提供了许多成员函数,包括但不限于: - `size()`:返回`vector`的元素数量。 - `empty()`:检查`vector`是否为空。 - `front()`:获取第一个元素。 - `back()`:获取最后一个元素。 - `at(index)`:安全地访问指定索引处的元素,如果索引越界,会抛出异常。 - `insert iterator, value`:在指定迭代器位置插入一个值。 - `erase iterator` 或 `erase range`:删除单个元素或元素范围。 - `reserve(size)`:预留足够的内存以容纳至少`size`个元素,避免不必要的内存重新分配。 - `capacity()`:返回当前已预留的内存大小。 - `shrink_to_fit()`:减少`vector`的容量至实际元素数量,释放未使用的内存。 `vector`的另一个重要特点是其内存管理。由于`vector`是动态数组,当添加元素导致容量不足时,`vector`会自动进行内部重分配,这可能涉及到拷贝所有元素到新的内存位置。因此,在处理大量数据或性能敏感的场合,需谨慎使用`vector`,并考虑其他容器,如`deque`或`list`。 总结,`vector`是C++中非常常用且灵活的容器,它提供了动态数组的功能,支持多种操作,并能容纳任何类型的对象。熟练掌握`vector`的使用对于编写高效且易于维护的C++代码至关重要。