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

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

相关文章:

  • 共享内存(System V)——进程通信
  • 计算机:基于深度学习的Web应用安全漏洞检测与扫描
  • Spark eventlog
  • AI重塑视觉艺术:DeepSeek与蓝耘通义万相2.1的图生视频奇迹
  • 神经网络的探秘:从基础到实战
  • ClickHouse 学习笔记
  • DataEase:一款国产开源数据可视化分析工具
  • Copy AI 技术浅析(一)
  • UE5.5 Niagara初始化粒子模块
  • L2-2 懂蛇语
  • Go Context深度剖析
  • 云原生服务网格:微服务通信的智能基础设施
  • 并发爬虫实战:多线程高效抓取王者荣耀全英雄皮肤
  • 分布式训练中的 rank 和 local_rank
  • WIFI无ip分配之解决方法(Solution to WiFi without IP allocation)
  • 【Help Manual】导出PDF中英文不在一行解决方案
  • 汉朔科技业绩高增长:市占率国内外遥遥领先,核心技术创新强劲
  • C和C++的内存管理 续篇
  • C#实现本地Deepseek模型及其他模型的对话v1.4
  • 在线商城服务器
  • 王毅同丹麦外交大臣拉斯穆森会谈
  • 4年间职务侵占、受贿逾亿元,北京高院:严惩民企内部腐败
  • 读懂城市|成都高新区:打造“人尽其才”的“理想之城”
  • 上海天文馆走进徐家汇书院,XR沉浸式天文科普体验再推力作
  • 天算星座二期首批卫星成功发射,将助力6G空天信息基础设施建设
  • 东部沿海大省浙江,为何盯上内河航运?