当前位置: 首页 > article >正文

FX-std::vector

std::vector 是 C++ 标准库中的一个动态数组容器,位于 <vector> 头文件中。它提供了自动管理内存、动态调整大小、随机访问元素等功能。以下是 std::vector 的基本用法:

1. 包含头文件

#include <vector>

2. 声明和初始化

// 声明一个空的 int 类型的 vector
std::vector<int> vec1;

// 声明并初始化一个包含 5 个元素的 vector,初始值为 0
std::vector<int> vec2(5);

// 声明并初始化一个包含 5 个元素的 vector,初始值为 10
std::vector<int> vec3(5, 10);

// 使用初始化列表初始化 vector
std::vector<int> vec4 = {1, 2, 3, 4, 5};

3. 添加元素

// 在末尾添加元素
vec1.push_back(10);
vec1.push_back(20);

// 使用 emplace_back 在末尾构造并添加元素(效率更高)
vec1.emplace_back(30);

4. 访问元素

// 使用下标访问元素
int first_element = vec4[0];

// 使用 at() 访问元素,会进行边界检查
int second_element = vec4.at(1);

// 访问第一个元素
int front_element = vec4.front();

// 访问最后一个元素
int back_element = vec4.back();

5. 修改元素

// 修改指定位置的元素
vec4[2] = 100;

// 使用 at() 修改元素
vec4.at(3) = 200;

6. 删除元素

// 删除最后一个元素
vec4.pop_back();

// 删除指定位置的元素
vec4.erase(vec4.begin() + 2);

// 删除指定范围的元素
vec4.erase(vec4.begin() + 1, vec4.begin() + 3);

// 清空所有元素
vec4.clear();

7. 获取大小和容量

// 获取当前元素数量
size_t size = vec4.size();

// 获取当前容量(可容纳的元素数量)
size_t capacity = vec4.capacity();

// 检查是否为空
bool is_empty = vec4.empty();

8. 调整大小

// 调整大小,新元素初始化为 0
vec4.resize(10);

// 调整大小,新元素初始化为 100
vec4.resize(15, 100);

// 预留空间,避免频繁重新分配内存
vec4.reserve(100);

9. 遍历元素

// 使用下标遍历
for (size_t i = 0; i < vec4.size(); ++i) {
    std::cout << vec4[i] << " ";
}

// 使用迭代器遍历
for (auto it = vec4.begin(); it != vec4.end(); ++it) {
    std::cout << *it << " ";
}

// 使用范围 for 循环遍历
for (int value : vec4) {
    std::cout << value << " ";
}

10. 其他操作

// 交换两个 vector 的内容
std::vector<int> vec5 = {6, 7, 8};
vec4.swap(vec5);

// 获取指向底层数组的指针
int* data_ptr = vec4.data();

11. 示例代码

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // 添加元素
    vec.push_back(6);
    vec.emplace_back(7);

    // 访问元素
    std::cout << "First element: " << vec.front() << std::endl;
    std::cout << "Last element: " << vec.back() << std::endl;

    // 修改元素
    vec[2] = 100;

    // 遍历元素
    for (int value : vec) {
        std::cout << value << " ";
    }
    std::cout << std::endl;

    // 删除元素
    vec.pop_back();
    vec.erase(vec.begin() + 1);

    // 输出大小和容量
    std::cout << "Size: " << vec.size() << ", Capacity: " << vec.capacity() << std::endl;

    return 0;
}

总结

std::vector 是一个非常强大且灵活的容器,适用于大多数需要动态数组的场景。它提供了丰富的成员函数来管理元素,并且能够自动处理内存分配和释放。


http://www.kler.cn/a/582907.html

相关文章:

  • Postgresql中null值和空字符串举例详解例子解析
  • SpringBoot 实现接口数据脱敏
  • 办公常用自动化工具
  • 【C++】STL全面简介与string类的使用(万字解析)
  • 【2025】基于springboot+vue的汽车销售试驾平台(源码、万字文档、图文修改、调试答疑)
  • 前:vue 后:django 部署:supervisor+nginx 流程及部分问题简记
  • python编写的一个打砖块小游戏
  • 基于AI智能算法的无人机城市综合治理
  • 计算机操作系统(一) 什么是操作系统
  • 安卓应用架构模式 MVC MVP MVVM有什么区别?
  • 多云环境中的大数据部署:从挑战到最佳实践
  • Vscode工具开发Vue+ts项目时vue文件ts语法报错-红波浪线等
  • 关于Java的入门
  • 解锁 Postman:下载安装与账户注册使用的全攻略,踏上测试新征程
  • Java后端高频面经——计算机网络
  • hadoop第3课(hdfs shell常用命令)
  • word排版:段内公式由于固定行间距显露不出的问题
  • kafka + flink +mysql 案例
  • Linux NFS/TFTP文件系统挂载
  • C# 数据类型总结