• vector刘汝佳算法入门学习笔记



    //*****-*-----vector***///////

    常用操作封装,a.size();可以读取大小
                  a.resize();可以改变大小;
                  a.push_back();可以向尾部添加元素;
        因为是个模板类
        声明:
                vector<int>a;vector<int>是一个类似于int a[];的整数数组;
                vector<int>b;
                vector<string>是类似于string a[]的字符串数组;
        vector 看上去像一个一等公民,因为他们可以直接赋值,还可以作为函数的参数或者返回值,
               而无须像数组那样另外用一个变量来指定元素个数。
       
        /*****------UVA101的木块问题------********/
       
        从左到右有n个木块,编号为0~n-1,要模拟四种操作;
       
        move a onto b:把a和b上方的木块全部归为,然后把a摞在b上面。
        move a over b:把a上面的全部归位,然后把a放下b所在木块堆的顶部。
        pile a onto b:把b上方的木块全部归位,然后把a及上面的木块整体摞在b上面。
        pile a over b:把a及上面的木块整体摞在b所在木块的顶部。

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

    const int maxn=30;

    int n;
    vector<int> pile[maxn];

    //找木块a所在的pile和height,以引用的形式返回调用者;
    void find_block(int a,int &p. int &n)
    {
        for(int p=0;p<n;p++)
        {
            for(int h=0;h<pile;p++)
            {
                if(pile[p][h]==a)
                    return;
            }
        }
    }


    //*****--------把p堆上的所有元素都放回原处***-----*/
    void clear_above(int p,int h)
    {
        for(int i=h+1;i<pile[p].size();i++)
        {
            int b=pile[p][i];
            pile[b].push_back(b);
        }
        pile[p].resize(h+1);//保留0~h的元素
    }

    //把p堆高度为h及其上方的木块整体放到p2堆的顶部;

    void pile_onto(int p,int p2,int h)
    {
        for(int i=h;i<pile[p].size();i++)
        {
            pile[p2].push_back(pile[p][i]);
        }
        pile[p].resize(h);
    }

    和数组相比的话:
     【优点】
     安全,不会不小心越界
     可以利用标准库的很多功能,包括现成的成员函数和一些泛化算法
     【缺点】
     使用迭代器必须要小心


     VECTOR 在频繁的插入和删除 效率比较低
      特别如果是大型的对象会增加很多的析构和拷贝
      小型的对象和内置数据类型VECTOR 效率还是比较高的
      所以如果是小型的对象和内置数据类型 可以用VECTOR 比LIST效率高
      除非你有非常频繁的删除插入


                 
                 

     
  • 相关阅读:
    20151104内置对象
    20151102adonet2
    20151029adonet1
    20151028c#4
    20151027c#3
    20151026c#2
    20151021c#1
    20151020sql2
    20151019sql1
    Codeforces Round #261 (Div. 2) C. Pashmak and Buses(思维+构造)
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934560.html
Copyright © 2020-2023  润新知