zoukankan      html  css  js  c++  java
  • vector理解一波~~~

    Vector;

    头文件:

    #include<vector>

    using namespacestd;

    定义:

    vector<类型>q;//类同于  "类型 q[];"

    vector<类型>q[1010] //类同于  “类型 q[1010][]”

    操作:

    往vector存入一个个数据

    函数名:w. push_back(数据);

    #include<iostream>

    #include<vector>

    using namespace std;

    vector<int>w;

    int main()

    {

        int x;

        for(inti=0;i<7;i++)

        {

           scanf("%d",&x);

           w.push_back(x);//在容器的末端塞入数据。这个容器很高端,你就理解为类似数组的存法。

        }

    }

    2.我们来更好地理解vector里面的东西;

    这里有两个函数:q.begin(),q.end();

    从英文名begin,end很好理解肯定是开头和结尾;= =废话。

    那么,我们来看看他是什么(数据);

    #include<stdio.h>

    #include<iostream>

    #include<vector>

    using namespacestd;

    int main()

    {

        vector<int>w;

        for(int i=0;i<7;i++)    //我们把 i 塞进去

        {

            w.push_back(i);

        }

        printf("begin=%dend=%d ",w.begin(),w.end());

    }

    结果:

    很糟糕的数据- -那就是内存了。然后end-begin不就是7嘛~~~~~

    我们称w.begin(),w.end()为迭代器(T^T好厉害的东西)迭代器是个所谓的复杂的指针【这里不多讲什么是迭代器,自己都不知道(啊,丢人..)】,那分别存了什么值呢?

    #include<stdio.h>

    #include<iostream>

    #include<vector>

    using namespacestd;

    int main()

    {

        vector<int>w;

        for(int i=0;i<7;i++)    //我们把 i 塞进去

        {

            w.push_back(i);

        }

        printf("begin=%dend=%d ",*w.begin(),*w.end());

    }

    结果:

    我们很好理解,w.begin()"指向"了第一个值—0,但是end呢,不是6?w.end()是末尾出去的那个,相当于我们定义数组a[10],我们在查询w.end(),就相当于查询a[10]这个元素。那么也就是说最后一个值,就是*(w.end()-1);

    #include<stdio.h>

    #include<iostream>

    #include<vector>

    using namespacestd;

    int main()

    {

        vector<int>w;

        for(int i=0;i<7;i++)    //我们把 i 塞进去

        {

            w.push_back(i);

        }

        printf("begin=%d end=%d 最后一个是:%d ",*w.begin(),*w.end(),*(w.end()-1));

    }

    结果:


    然后就是遍历:

    这里有一个函数w.size()指这个vector所存的值的区域大小

    #include<stdio.h>

    #include<iostream>

    #include<vector>

    using namespacestd;

    int main()

    {

        vector<int>w;

        for(int i=0;i<7;i++)    //我们把 i 塞进去

        {

            w.push_back(i);

        }

        printf("size=%d ",w.size());

    }

    结果:


    那好,我们就可以遍历了;

    这里有一种神奇的用法就是,和数组一样的!!!为什么呢?T^T不知道啊;

    #include<stdio.h>

    #include<iostream>

    #include<vector>

    using namespacestd;

    int main()

    {

        vector<int>w;

        for(int i=0;i<7;i++)    //我们把 i 塞进去

        {

            w.push_back(i);

        }

        for(int j=0;j<w.size();j++)

        {

            printf("第%d个=%d ",j+1,w[j]);

        }

    }

    结果:

    还有一种就是我们知道,w.begin(),w.end()是[迭代器](一种复杂的【指针】),那么我们用同样的【迭代器】去遍历,也可以吧;

    定义:vector<int>::iterator b;

    #include<stdio.h>

    #include<iostream>

    #include<vector>

    using namespacestd;

    int main()

    {

        vector<int>w;

        for(int i=0;i<7;i++)    //我们把 i 塞进去

        {

            w.push_back(i);

        }

        vector<int>::iterator b;

        int cont=1;

        for(b=w.begin();b!=w.end();b++)

        {

            printf("第%d个=%d ",cont++,*b);

        }

    }

    结果:

    还有就是清空:

    w.clear();

    #include<stdio.h>

    #include<iostream>

    #include<vector>

    using namespacestd;

    int main()

    {

        vector<int>w;

        for(int i=0;i<7;i++)    //我们把 i 塞进去

        {

            w.push_back(i);

        }

        vector<int>::iterator a;

        int cont=1;

        for(a=w.begin();a!=w.end();a++)

        {

            printf("第%d个=%d ",cont++,*a);

        }

        w.clear();

        printf("begin=%dend=%d ",w.begin(),w.end());

        if(w.begin()==w.end())

            printf("清空啦啦啦啦!!! ");

        vector<int>::iterator b;

        cont=1;

        for(b=w.begin();b!=w.end();b++)

        {

           printf("第%d个=%d ",cont++,*b);

        }

    }

    结果:


    OK,其他还有很多什么翻转啊,很高级的东西,试一试就什么都知道了。

  • 相关阅读:
    线程池
    自定义死锁
    不安全线程取钱
    JUC Lock实现类ReentrantLock使用说明
    同步方法跟同步方法块 synchronized
    线程的管程法跟信号灯法_生产者消费模式
    CopyOnWriteArrayList JUC当中安全容器
    inserttextatcursorinacontenteditablediv
    Android开发——NDK开发入门
    Linux下线程同步对象(1)——互斥量
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934553.html
Copyright © 2011-2022 走看看