C++示例:学习C++标准库std::vector动态数组的使用

  

01 std::vector介绍

std::vector是C++标准库中的一个模板类,它提供了动态数组的功能。std::vector允许你存储一系列的元素,并可以在运行时动态地添加或删除元素。

02 初始定义

以下示例分别定义存储不同数据元素的动态数组容器对象。

#include <vector>

// 自定义类。
class MyClass;

// 定义存储int整数动态数组容器对象。
std::vector<int> myVector1;

// 定义存储float浮点数动态数组容器对象。
std::vector<float> myVector2;

// 定义存储MyClass类动态数组容器对象。
std::vector<MyClass> myVector3;
  • 通过初始值定义示例:
#include <vector>

// 通过初始值创建动态数组容器对象。
std::vector<int> myVector{100, 200};

03 添加元素

  • 将元素添加到尾部:

push_back()和emplace_back()函数用于将元素添加到容器的尾部。

// 将元素添加到尾部示例。
myVector.push_back(1);
myVector.push_back(2);
myVector.emplace_back(3);
  • 将元素插入到开头(或指定)位置:

insert()和emplace()函数用于将元素插入到容器的指定位置。

std::vector::begin() 表示开头位置。

std::vector::cbegin() 表示开头位置。

std::vector::end() 表示尾部位置。

std::vector::cend() 表示尾部位置。

// 将元素添加到开头位置示例。
myVector.insert(myVector.cbegin(), 100);
myVector.emplace(myVector.cbegin(), 200);

04 删除元素

  • 删除尾部元素:

pop_back()函数用于删除容器尾部元素。

// 删除最后元素示例。
myVector.pop_back();
  • 删除开头(或指定)元素:

erase()函数用于通过迭代器删除容器指定位置的元素。

// 删除容器开头元素示例。
myVector.erase(myVector.cbegin());
  • 使用迭代器删除指定元素:

示例说明:遍历容器,找出值等于100的元素并删除。

// 遍历容器,找出值等于100的元素并删除。
for (auto iter = myVector.begin(); iter != myVector.end(); )
{
    const int v = *iter;
    if (100 == v)
    {
        // 删除值为100的元素。
        iter = myVector.erase(iter);
    }
    else
    {
        // 迭代器移到下一个元素。
        ++iter;    
    }
}

05 访问和修改元素

  • 访问和修改开头元素:

front()函数等价于at(0),用于访问容器开头元素。如果容器为空,函数会抛出异常。

// 访问容器开头元素示例。
int v = myVector.front();

// 修改容器开头元素值示例。
myVector.front() = 10;
  • 访问和修改尾部元素:

back()函数用于访问容器尾部元素。如果容器为空,函数会抛出异常。

// 访问容器尾部元素示例。
int v = myVector.back();

// 修改容器尾部元素值示例。
myVector.back() = 20;
  • at函数访问和修改指定元素:

at(INDEX)函数用于访问指定INDEX下标位置的元素。如果INDEX下标元素不存在,函数会抛出异常。

// 访问下标0元素示例。
int v1 = myVector.at(0);
// 访问下标0元素示例。
int v2 = myVector.at(1);

// 修改下标0元素值示例。
myVector.at(0) = 100;
// 修改下标1元素值示例。
myVector.at(1) = 200;
  • 通过[INDEX]访问和修改指定位置元素:

[INDEX]等价于at(INDEX)函数,用于访问指定INDEX下标位置的元素。如果INDEX下标元素不存在,访问会报异常。

// 访问下标0元素示例。
int v1 = myVector[0];
// 访问下标0元素示例。
int v2 = myVector[1];

// 修改下标0元素值示例。
myVector[0] = 100;
// 修改下标1元素值示例。
myVector[1] = 200;

06 遍历元素

#include <vector>
#include <iostream>

// 定义并初始化为:1 3 2 5 4
std::vector<int> myVector{1, 3, 2, 5, 4};

// 遍历容器所有元素示例。
for (int v : myVector)
{
    // 输出 1 3 2 5 4
    std::cout << "v = " << v << std::endl;
}

07 元素排序

  • 升序排序:
#include <vector>
#include <iostream>

// 定义并初始化为:1 3 2 5 4
std::vector<int> myVector{1, 3, 2, 5, 4};

// 默认排序(升序)示例。
std::sort(myVector.begin(), myVector.end());

// 遍历容器所有元素示例。
for (int v : myVector)
{
    // 输出 1 2 3 4 5
    std::cout << "v = " << v << std::endl;
}
  • 降序排序:
#include <vector>
#include <iostream>

// 定义并初始化为:1 3 2 5 4
std::vector<int> myVector{1, 3, 2, 5, 4};

// 降序排序示例。
std::sort(myVector.begin(), myVector.end(), std::greater<int>());

// 遍历容器所有元素示例。
for (int v : myVector)
{
    // 输出 5 4 3 2 1
    std::cout << "v = " << v << std::endl;
}
  • 使用lambda表达式自定义排序:
#include <algorithm>

// 使用lambda表达式实现降序示例。
std::sort(myVector.begin(), myVector.end(), [](int a, int b)
    {
          return a > b;
    }
);

08 附录:完整源码

关注公众号下载本示例完整源码(17_std_vector_example.zip)。

-【End】-

#想了解更多精彩内容,关注下方公众号,还有示例源码、开发工具免费下载。

喜欢本文章,记得点赞、分享、关注哦~

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

20YC编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值