zoukankan      html  css  js  c++  java
  • 一文读懂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;
    }
    
  • 相关阅读:
    复制
    rpm 软件包管理
    xfsdump 备份文件系统
    dhcp服务器(一)
    【转】kafka集群搭建
    postgresql主从配置
    centos7 安装配置postgresql
    centos7 安装配置zookeeper
    zookeeper
    piplinedb 安装配置
  • 原文地址:https://www.cnblogs.com/xwxz/p/14745055.html
Copyright © 2011-2022 走看看