C++向量vector详解与操作

需积分: 10 8 下载量 17 浏览量 更新于2024-09-18 收藏 51KB DOC 举报
在C++编程中,`vector` 是一个非常重要的内置容器,它提供了动态数组的功能,解决了数组在灵活性和可扩展性上的局限。`vector` 是一个类模板,属于标准库的一部分,其主要用途是存储和管理同类型的数据。使用`#include <vector>` 引入必要的头文件来操作vector。 **定义和初始化**: - `vector<typeName> v1;` 默认创建一个空的vector,直接尝试赋值如 `v1[0]=5;` 是不允许的,因为尚未分配内存。 - 使用复制初始化可以创建一个与已有vector相同元素的新vector,如 `vector<typeName> v2(v1);` 或 `v2 = v1;`。 - `vector<typeName> v3(n,i);` 创建一个包含n个值为i的元素的vector。 - 通过数组也可以初始化vector,例如 `vector<int> v5(a,a+5);`,v5大小为a的长度,但要注意最后一个指针必须指向下一个将被忽略的位置。 **值初始化**: - 如果没有显式提供元素初始化,vector会根据元素类型进行自动值初始化。对于有构造函数的类类型元素,会调用构造函数;无构造函数的简单类型,会使用默认构造函数生成默认值。 **重要操作**: 1. `v.push_back(t)` 在vector的尾部添加一个元素t,同时增加容器的大小。与之相反的是 `list` 的 `push_front()` 函数,用于在头部插入。 2. `v.size()` 返回容器中元素的数量,返回值类型为`size_type`。可以使用 `v.resize()` 方法改变容量,如 `v.resize(2*v.size)` 扩容两倍,或指定新的大小和填充值,如 `v.resize(2*v.size, 99)`。 3. `v.empty()` 方法用于检查vector是否为空,如果为空则返回`true`。 **注意事项**: - vector的存储空间是连续的,这使得访问元素速度较快,适合大量元素且对访问顺序有要求的场景。 - 容器的扩展通常是自动的,但如果手动调整大小,可能需要重新分配内存,这可能导致临时的性能下降。 - 学习和掌握这些基本操作是使用vector的关键,熟练运用它们能有效提高代码的效率和可读性。 总结起来,vector在C++中是一个非常实用的数据结构,通过合理的使用它的定义、初始化、操作和特性,可以方便地管理动态数据集合,为程序设计带来很大的便利。