2021考研408数据结构C++ vector动态数组详解

2021考研408数据结构C++ vector动态数组详解

【免费下载链接】2021-Postgraduate-408 💯✍备考2021年研究生-408 【免费下载链接】2021-Postgraduate-408 项目地址: https://gitcode.com/gh_mirrors/20/2021-Postgraduate-408

什么是vector

vector是C++标准模板库(STL)中的一个重要容器,它可以看作是一个能够存放任意类型元素的动态数组。与普通数组相比,vector最大的优势在于它能够根据需要自动调整大小,无需程序员手动管理内存。

在2021考研408数据结构考试中,熟练掌握vector的使用对于解决编程题至关重要。本文将全面介绍vector的各种用法和注意事项。

vector的声明与初始化

使用vector前需要包含头文件:

#include <vector>

vector有多种初始化方式:

vector<int> v1;          // 创建一个空vector
vector<int> v2(v1);      // 创建v1的副本
vector<int> v3(5, 1);    // 创建包含5个1的vector
vector<int> v4(5);       // 创建5个默认初始化为0的vector

特别注意:

vector<int> a(5);   // 创建一个包含5个0的vector
vector<int> a[5];   // 创建包含5个空vector的数组

vector的常用操作

vector提供了丰富的成员函数来操作元素:

v.empty();       // 判断是否为空
v.size();        // 获取元素个数
v.push_back(t);  // 在末尾添加元素
v.pop_back();    // 删除末尾元素
v.clear();       // 清空所有元素
v.front();       // 访问第一个元素
v.back();        // 访问最后一个元素
v[n];            // 通过下标访问元素

vector的迭代器

迭代器是访问vector元素的另一种方式:

// 正向迭代
for(auto it = v.begin(); it != v.end(); it++) {
    cout << *it << endl;
}

// 反向迭代
for(auto it = v.rbegin(); it != v.rend(); it++) {
    cout << *it << endl;
}

vector的高级操作

vector还提供了一些高级操作:

v.assign(n, val);       // 将vector赋值为n个val
v.insert(pos, val);     // 在指定位置插入元素
v.erase(pos);           // 删除指定位置元素
v.resize(n);            // 调整vector大小
v.reserve(n);           // 预留空间
v.swap(other);          // 交换两个vector内容

vector的二维数组实现

vector可以方便地实现二维数组:

vector<vector<int>> matrix(5, vector<int>(3)); // 5行3列矩阵

// 访问元素
matrix[0][0] = 1;

// 动态添加行
matrix.push_back(vector<int>(3));

使用vector的注意事项

  1. 避免越界访问:使用v[n]前确保n小于v.size()
  2. 效率考虑:频繁插入删除时考虑使用list
  3. 参数传递:作为函数参数时使用引用传递void func(vector<int>& v)
  4. 内存管理:大容量vector可能导致内存问题

常见错误示例

vector<int> v;
for(int i=0; i<10; i++) {
    v[i] = i;  // 错误!v尚未分配空间
}

// 正确做法
for(int i=0; i<10; i++) {
    v.push_back(i);
}

通过本文的学习,相信你已经掌握了vector的基本用法和常见技巧。在考研408数据结构考试中,合理使用vector可以大大提高编程题的解决效率。

【免费下载链接】2021-Postgraduate-408 💯✍备考2021年研究生-408 【免费下载链接】2021-Postgraduate-408 项目地址: https://gitcode.com/gh_mirrors/20/2021-Postgraduate-408

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值