C++中的动态数组vector的基本操作


前言

在 C++ 中,std::vector 是一个标准库中的容器类型。它是一个动态数组,可以根据需要动态增长或缩小其大小,并提供了许多有用的方法来操作其中的元素。本文主要介绍vector数组的基本操作,适合对vector有基本了解的读者,如果你完全不了解vector,请看我的上一篇博文:

C++中的vector简介


一、vector数组的声明

vector数据类型在使用的时候,需要引用相应的头文件:

#include <vector>
std::vector<int> myVector;// 声明一个整型 vector

以上代码是声明一个myVector数组,其类型为int,没有进行初始化赋值,那么其默认长度为0;

二、vector数组的初始化

可以在声明的同时进行初始化:

std::vector<int> myVector = {1, 2, 3, 4, 5};

以上代码声明并初始化一个包含 5 个元素整型 vector,此时数组的长度为5。
但是以下这种方法是不合法的:

std::vector<int> myVector;
myVector = {1, 2, 3, 4, 5};

一旦声明以后,该动态数组的初始大小就是0了,此时不能直接给它赋值,不然会超出内存,而应该先声明内存大小再进行赋值,这里只需要知道即可,等你看完后面的介绍,自然就会明白了。

三、vector数组的大小

1. 在声明时设置大小

也可以在声明的时候不进行初始化,但是规定其大小:

int initialSize = 5;
std::vector<int> myVector(initialSize); // 声明一个包含 5 个元素的整型 vector

2. 修改大小

也可以用resize,修改myVector的大小

std::vector<int> myVector; // 声明一个整型 vector
// 修改 myVector 的大小为 5
myVector.resize(5);

3. 查看大小

要查看 vector 的大小,可以使用 size() 方法。以下是一个示例代码:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5}; // 声明一个整型 vector,并初始化

    // 输出 vector 的大小
    std::cout << "Vector size: " << myVector.size() << std::endl;

    return 0;
}

在这个示例中,我们使用 myVector.size() 来获取整型 vector myVector 的大小,并将其输出到控制台。通过调用 size() 方法,你可以得知 vector 中元素的数量。

四、添加元素与删除元素

1. 添加元素

在 C++ 中,向 vector 添加元素可以使用以下方法:
使用 push_back() 方法:push_back() 方法用于在 myVector 的末尾添加新的元素。

std::vector<int> myVector = {1, 2, 3};
// 向 myVector 中逐个添加元素
myVector.push_back(1);
myVector.push_back(2);
myVector.push_back(3);

使用 emplace_back() 方法:emplace_back() 方法可以通过原地构造的方式在 vector 的末尾添加新元素,效率更高。

std::vector<std::string> myVector = {"apple", "banana"};
myVector.emplace_back("orange"); // 在末尾原地构造添加元素"orange"

使用 insert() 方法:insert() 方法可以在指定位置插入一个或多个元素。

std::vector<int> myVector = {1, 2, 5, 6};
myVector.insert(vec.begin() + 2, 3); // 在指定位置插入元素3,当前位置为第三个元素

2. 删除元素

要删除 vector 中的元素,可以使用以下方法:
使用 erase() 方法:可以通过 erase() 方法删除指定位置的元素或者一定范围内的元素。

std::vector<int> myVector = {1, 2, 3, 4, 5};
// 删除指定位置的元素,比如删除第三个元素(索引为2)
myVector.erase(myVector.begin() + 2);
// 删除指定范围内的元素,比如删除第二个到第四个元素(索引为1到3)
myVector.erase(myVector.begin() + 1, myVector.begin() + 4);

使用 pop_back() 方法:可以删除 vector 中最后一个元素。

std::vector<int> myVector = {1, 2, 3, 4, 5};
myVector.pop_back(); // 删除最后一个元素

使用自定义逻辑删除元素:可以根据自定义的条件使用算法函数结合 erase-remove idiom 删除符合条件的元素。

std::vector<int> myVector= {1, 2, 3, 4, 5};
// 删除所有奇数元素
myVector.erase(std::remove_if(myVector.begin(), myVector.end(), [](int i){ return i % 2 != 0; }), myVector.end());

这些是常用的删除 vector 元素的方法,根据具体需求选择适合的方法来操作 vector。


总结

本文较为详细地介绍了C++中的vector数组的基本操作,给出了每种操作的多种可能方法,此外,vector的容量(capacity)和大小(size)比较容易混淆,我将在后续的文章中用实例演示的方法来详细说明。本文内容如有不对指出,欢迎您指出!如有问题,欢迎评论区交流!

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值