文章目录
前言
在 C++ 中,std::vector 是一个标准库中的容器类型。它是一个动态数组,可以根据需要动态增长或缩小其大小,并提供了许多有用的方法来操作其中的元素。本文主要介绍vector数组的基本操作,适合对vector有基本了解的读者,如果你完全不了解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)比较容易混淆,我将在后续的文章中用实例演示的方法来详细说明。本文内容如有不对指出,欢迎您指出!如有问题,欢迎评论区交流!