📜  c++ 向量 - C++ (1)

📅  最后修改于: 2023-12-03 15:29:52.467000             🧑  作者: Mango

C++向量

简介

在C++中,向量(vector)是一种动态数组,它能够在运行时进行扩展和收缩。 向量的大小可以在插入或删除元素时动态调整。

与C++数组不同,向量的大小和容量是可变的。 容量是向量能够容纳的元素数量,大小是向量实际包含的元素数量。 当向量大小超过容量时,向量的容量将自动增加。

向量与指针相比,具有更好的内存管理和安全性。 向量通过使用迭代器(iterator)来访问其元素。

声明和初始化

声明向量需要包含 <vector> 头文件。 必须有指定向量的元素类型,例如 vector<int>。 声明后,可以使用无参构造函数来创建一个空向量,或使用初始化列表构造函数来创建一个预先填充了值的向量。

创建空向量
vector<int> myVector; //创建一个空向量
初始化向量
vector<int> myVector{ 1, 2, 3, 4 }; //声明并初始化一个向量
vector<int> myVector = { 1, 2, 3, 4 }; //使用初始化列表构造函数
常用方法
添加元素

向向量添加元素可以使用 push_back() 方法。 它将元素添加到向量的末尾。 也可以使用 insert() 方法来指定插入元素的位置。

vector<int> myVector = { 1, 2, 3, 4 };
myVector.push_back(5); //在末尾添加元素
myVector.insert(myVector.begin() + 2, 6); //插入元素
删除元素

可以使用 pop_back() 方法从向量末尾删除元素。 也可以使用 erase() 方法来删除指定位置的元素。

vector<int> myVector = { 1, 2, 3, 4 };
myVector.pop_back(); //从末尾删除元素
myVector.erase(myVector.begin() + 2); //从指定位置删除元素
访问元素

可以使用下标运算符和迭代器来访问向量的元素。 下标从0开始。 可以使用 at() 方法来访问元素,并提供边界检查。

vector<int> myVector = { 1, 2, 3, 4 };
int firstElement = myVector[0]; //访问第一个元素
int thirdElement = myVector.at(2); //访问第三个元素
获取大小和容量

可以使用 size() 来获取向量的大小,也可以使用 capacity() 来获取向量的容量。

vector<int> myVector = { 1, 2, 3, 4 };
int vectorSize = myVector.size(); //获取向量大小
int vectorCapacity = myVector.capacity(); //获取向量容量
完整示例
#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> myVector{ 1, 2, 3, 4 };
    myVector.push_back(5);
    myVector.insert(myVector.begin() + 2, 6);
    cout << "Vector size: " << myVector.size() << endl;
    cout << "Vector capacity: " << myVector.capacity() << endl;
    for (auto i : myVector) {
        cout << i << " ";
    }
    cout << endl;
    myVector.pop_back();
    myVector.erase(myVector.begin() + 2);
    cout << "Vector size: " << myVector.size() << endl;
    cout << "Vector capacity: " << myVector.capacity() << endl;
    for (int i = 0; i < myVector.size(); i++) {
        cout << myVector[i] << " ";
    }
    cout << endl;
    return 0;
}

输出:

Vector size: 6
Vector capacity: 8
1 2 6 3 4 5
Vector size: 4
Vector capacity: 8
1 2 3 4