C++向量(vector)详解:定义、初始化与关键操作

需积分: 24 7 下载量 141 浏览量 更新于2024-09-28 收藏 24KB DOCX 举报
本文将详细介绍C++中的vector容器,它是标准库中用于存储动态数组的高效工具。vector在C++中是一个类模板,不是具体的类型,例如`vector<int>`就是使用模板生成的一种类型,其内部的存储空间是连续的,与C++内置数组不同,vector提供了容器的抽象概念和丰富的操作方法。 首先,我们来了解vector的定义和初始化方式。要使用vector,你需要包含`#include<vector>`头文件。创建vector对象时,可以采用多种方式: 1. 默认构造:`vector<typeName>v1;` 创建一个空vector,注意直接对未初始化的vector元素进行赋值(如`v1[0]=5;`)是不允许的,因为此时v1为空。 2. 复制构造:`vector<typeName>v2(v1);` 或 `v2 = v1;`,这会创建一个v1的副本,如果v1的大小大于v2,v2的大小会被扩展到与v1相同。 3. 初始化构造:`vector<typeName>v3(n, i);` 创建一个包含n个初始值为i的元素的vector。 4. 数组初始化:`vector<int>v5(a, a+5);` 从数组a的起始位置到结束位置(不包括a+5)初始化vector,v5的大小会根据数组长度确定。 5. 直接复制初始化:`vector<int>v6(v5);` 这里v6是一个完整的v5的副本,即元素和大小都完全一致。 在定义vector时,可以指定最大容量和初始值,如`vector<类型>(最大容量, 初始所有值)`。对于未指定元素初始化式的vector,标准库会自动进行值初始化,具体规则如下: - 如果元素是具有构造函数的类类型,会调用相应的构造函数进行初始化。 - 对于无构造函数的类类型元素,标准库会创建一个带默认初始值的对象进行值初始化。 接下来是vector对象的关键操作: 1. `v.push_back(t)`:在vector的尾部添加一个新元素t,同时增加vector的大小。与之相对的是`list`的`push_front()`,它在容器的开头插入元素。 2. `v.size()`:返回vector中元素的数量,返回值类型是`size_type`,这是一种特定于vector的整数类型,通常可以理解为整型。 3. `v.resize(new_size)` 或 `v.resize(new_size, value)`:改变vector的容量,如果new_size大于当前大小,新元素会被初始化为`value`;如果new_size小于当前大小,vector的尾部元素会被删除。 4. `v.empty()`:判断vector是否为空,如果为空则返回true,否则返回false。 通过这些操作,vector提供了一种灵活且高效的动态数组管理方式,使得在C++编程中处理可变大小的数据集合变得简单易行。掌握vector的用法对于C++开发者来说至关重要,尤其是在处理大量数据和频繁增删操作的场景中。