美文网首页
在ACM中【vector】容器向量的好用之处【STL】

在ACM中【vector】容器向量的好用之处【STL】

作者: 程序员白泽 | 来源:发表于2019-04-30 13:36 被阅读0次

首先简单介绍一下vector,它是stl标准模板库中的一个容器,意思是向量,那么顾名思义,通过借助vector我们可以实现数与数之间一对一乃至一对多的关系

一对一的情况如下:

当我们新建一个vector容器的时候如果不指定它的长度,他将以动态的方式随着数据的插入而不断扩充,像是一个动态的一维数组,但这种用法在此将不具体讲述,因为和一维数组实在太像了,“向量”二字的优势没有体现出来

图示不指定长度的vector图示:

v1.png

简单示例代码:

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;

vector<int> r;

int main(){
    int n;
    while(cin>>n){
        for(int i=1;i<=n;i++){
            int x;
            cin>>x;
            r.push_back(x);     //向r的最后一个位置插入一个x,r的长度会逐渐增长 
        }
        cout<<r.size()<<endl;   //输出r的长度 
        for(vector<int>::iterator it=r.begin();it!=r.end();it++){   //通过迭代器的方式遍历r中的每个数 
            cout<<*it<<endl;
        }
        cout<<r[0]<<endl;       //通过下标的方式输出向量对应的值 
        cout<<r[1]<<endl;       
        cout<<r.front()<<endl;  //访问第一个元素 
        cout<<r.back()<<endl;   //访问最后一个元素 
        r.clear();          //清空向量容器 
    }
    return 0;
}

一对多的情况如下:

在我们做题的时候需要有一种现成的方法能将一个数字与多个数字以一对多的形式串起来,比如从一个点可以直接到达的三个点,通过指定定长的vector容器便可以达到这种效果,先上图:

v2.png

每一个点都是一个独立的个体,也可以形象地比作一个动态的二维数组,下标为0的点又是一个容器,它也从下标0开始存放了三个数12,13,13,我们可以通过与一对一时类似的方法去调用还有插入元素

简单的代码示例:

#include<iostream>
#include<algorithm>
#include<vector>
#include<cstdio>
using namespace std;

vector<int> r[100];

int main(){
    int n;
    while(cin>>n){
        for(int i=0;i<100;i++) r[i].clear();    //由于每一个r[i]都是一个独立的个体,需要依次清空 
        for(int i=1;i<=n;i++){      //只为下标为1的向量容器不断插入n个数,下标也从0开始 
            int x;
            cin>>x;
            r[1].push_back(x);
        }
        cout<<r[1].size()<<endl;    //输出单个下标为1的向量容器的大小 
        cout<<r[1][0]<<endl;        //类似于一个二维数组,输出下标为1的容器中下标为0的元素存放的数值 
        cout<<r[1][1]<<endl; 
    }
    return 0;
}

相关文章

  • 在ACM中【vector】容器向量的好用之处【STL】

    首先简单介绍一下vector,它是stl标准模板库中的一个容器,意思是向量,那么顾名思义,通过借助vector我们...

  • 面试知识点(5)STL

    容器类型 STL容器主要分为 顺序容器 vector(向量容器) deque(双端队列容器) list(双向链...

  • C++ Vector用法

    vector 是向量类型,它可以容纳许多类型的数据,称其为容器。vector 是C++ STL的一个重要容器,使用...

  • C++ STL(2)

    C++ STL(2) from my csdn blog 顺序性容器 向量 vector动态数组,创建后会在内存中...

  • C++ STL 之 vectot(三)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 容器增加元素 vector 容器增加...

  • 面试基础知识

    stl容器总结: 各种容器的元素在内存中的储存方式 vector(向量):相当于数组,但其大小可以不预先指定,并且...

  • C++学习四:高级

    STL容器相关 一、vector向量 二、stack栈 三、队列queue 四、list 五、set 六、谓词 七...

  • C++ STL 之 vectot(四)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 容器删除元素 使用 clear() ...

  • 标准模板库-vector

    标准模板库-vector 1. vector简介 vector为C++的STL中的模板数组容器。在使用时需要包含#...

  • 标准模板库(容器)

    vector 向量容器 List 容器 map 容器

网友评论

      本文标题:在ACM中【vector】容器向量的好用之处【STL】

      本文链接:https://www.haomeiwen.com/subject/ymnmnqtx.html