一文读懂C++ Vector在算法竞赛中的常见用法

一文读懂C++ Vector在算法竞赛中的常见用法

Vector相当于对数组的封装,提供了非常丰富的方法,在算法竞赛中能大大节省我们的时间。以下是我在刷题中会使用到的常见Vector用法。注释都写好了。

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> v1; // 定义⼀个vector v1,定义的时候没有分配⼤⼩
    cout<<v1.size()<<endl; // 输出 0, 定义时可以不分配大小,之后再用resize分配
    v1.resize(10);
    cout<<v1.size()<<endl;// 输出 10, 定义时可以不分配大小,之后再用resize分配, 默认元素都为0
    for (int i = 0; i < v1.size(); i++) {
        cout<< v1[i] << " ";
    }
    cout<<endl;
    //以上循环输出为 0 0 0 0 0 0 0 0 0 0
    int n = 5;
    vector<int> v2(n); //定义n个大小的数组
    for (int i = 0; i < v2.size(); i++) {
        cout<< v2[i] << " ";
    }
    cout<<endl;
    //以上循环输出为 0 0 0 0 0
    // 在定义的时候就可以对vector变量进⾏初始化
    vector<int> v3(n,9); //定义n个大小的数组,且所有数值都初始化为9
    for (int i = 0; i < v3.size(); i++) {
        cout<< v3[i] << " ";
    }
    cout<<endl;
    //以上循环输出为 9 9 9 9 9
    //对于vector的基本操作和数组差不多,但是多了很多方法
    v3[0] = 88;
    v3[3] = 77;
    for (int i = 0; i < v3.size(); i++) {
        cout<< v3[i] << " ";
    }
    cout<<endl;
    //以上循环输出为 88 9 9 77 9

    //push_back的使用
    vector<int> v4; // 定义⼀个v4,定义的时候不需要分配⼤⼩
    cout<<v4.size()<<endl; //输出为 0
    for (int i = 0; i < 10; i++) {
        v4.push_back(i); //在v4的末尾添加⼀个元素i
    }
    cout<<v4.size()<<endl; //输出为10 v4中的元素为0 1 2 3 4 5 6 7 8 9

    //迭代器访问
    for (auto it = v4.begin(); it!=v4.end(); it++) {
        cout<< *it <<" ";
    }
    cout<<endl;
    //以上循环输出为 0 1 2 3 4 5 6 7 8 9

    //vector的其他操作,其实是封装了数据结构中线性表的增删查改等操作
    v4.pop_back(); //相当于弹栈,删除最后一个元素 执行后v4中的值为:0 1 2 3 4 5 6 7 8
    v4.pop_back();
    v4.pop_back();
    v4.pop_back();
    cout<< *v4.begin() <<endl; //输出0
    cout<< *v4.end() <<endl; //输出6

    //插入之前v4的值为 0 1 2 3 4 5
    auto i = v4.insert(v4.begin(),99); //在v4的begin的位置插入一个元素为99 返回插入元素的位置的迭代器
    cout<< *i <<endl; //输出99 此时v4的值为 99 0 1 2 3 4 5

    auto i2 = v4.erase(v4.begin()+1);//删除下标为1的值,并把删除的位置迭代器返回
    cout<< *i2 <<endl; //输出1 此时v4的值为 99 1 2 3 4 5
    //查和改直接使用【】就行就不再演示了

    for (auto it = v4.begin(); it!=v4.end(); it++) {
        cout<< *it <<" ";
    }
    cout<<endl;
    //以上循环输出为 99 1 2 3 4 5
    return 0;
}
posted @ 2021-05-08 15:17  小尾学长  阅读(304)  评论(0编辑  收藏  举报