//*****-*-----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效率高

  除非你有非常频繁的删除插入



             

             

 

vector刘汝佳算法入门学习笔记的更多相关文章

  1. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 1(String)

    第一题:401 - Palindromes UVA : http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8 ...

  2. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第六章 1(Lists)

    127 - "Accordian" Patience 题目大意:一个人一张张发牌,如果这张牌与这张牌前面的一张或者前面的第三张(后面称之为一位置和三位置)的点数或花式相同,则将这张 ...

  3. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 3(Sorting/Searching)

    第一题:340 - Master-Mind Hints UVA:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Item ...

  4. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 2(Big Number)

    这里的高精度都是要去掉前导0的, 第一题:424 - Integer Inquiry UVA:http://uva.onlinejudge.org/index.php?option=com_onlin ...

  5. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第六章 2(Binary Trees)

    112 - Tree Summing 题目大意:给出一个数,再给一颗树,每个头节点的子树被包含在头节点之后的括号里,寻找是否有从头节点到叶子的和与给出的数相等,如果有则输出yes,没有输出no! 解题 ...

  6. poj 1363 Rails (【栈的应用】 刘汝佳的写法 *学习)

    Rails Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25964   Accepted: 10199 Descripti ...

  7. Scala入门学习笔记三--数组使用

    前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...

  8. OpenCV入门学习笔记

    OpenCV入门学习笔记 参照OpenCV中文论坛相关文档(http://www.opencv.org.cn/) 一.简介 OpenCV(Open Source Computer Vision),开源 ...

  9. ACM题目推荐(刘汝佳书上出现的一些题目)[非原创]

    原地址:http://blog.csdn.net/hncqp/article/details/1758337 推荐一些题目,希望对参与ICPC竞赛的同学有所帮助. POJ上一些题目在http://16 ...

随机推荐

  1. javaproject积累——树形结构的操作

    近期一直被树形结构整的非常头大,又是递归.又是循环.可是,好在我们在经历了千辛万苦后.最终弄出来了.事实上就是组织机构的常规操作,有些是我们过度设计.有些是我们想错了.而对数的逻辑读取,我们就属于想错 ...

  2. MergeLinklist

    写了一个合并有序链表,代码有点纠结啊.涉及到指针就是麻烦,DS课曹老师课件说linklist是DS的难点. . . 假设数组就非常easy了.链表就要小心. 里面遇到的一些情况.第一.最好是先确定l1 ...

  3. 当电视沦为“情怀”,5G能不能拯救它?(zz)

    文|佘凯文 来源|智能相对论(aixdlun) 现阶段,智能家居行业极度期待5G的到来,甚至超过手机.行业对于颠覆性的升级的欲望极其强烈,纵观整个智能家居行业,除了像智能音箱外的偶尔单品能够“引爆”市 ...

  4. 命令行添加PATH

    如何设置PATH 命令:echo "export PATH=xxxxxx:$PATH" >> ~/.bash_profile 解释:把"export PATH ...

  5. 仿udhcpd配置文件读取的一段代码

    前段时间看udhcpd的源代码,后来因为没直接应用,也就放弃了.网上有文章udhcpd详解(搜索一下有很多),其中在介绍udhcpd的配置相关代码时,有如下一句话,学习了这段代码后,以后用到需要读配置 ...

  6. CentOS 7 安装jdk9

    1.下载jdk9 http://download.oracle.com/otn-pub/java/jdk/9.0.4+11/c2514751926b4512b076cc82f959763f/jdk-9 ...

  7. [Silverlight 2.0 控制物体绕圆弧运行(C#初探篇)]

    我自己写的第一个 Silverlight 2.0 程序    [Silverlight 2.0 控制物体绕圆弧运行(C#初探篇)]            程序运行时:小地球将绕着圆形轨迹做圆周运动. ...

  8. 牛人的ACM经验 (转)

    一:知识点     数据结构:       1,单,双链表及循环链表       2,树的表示与存储,二叉树(概念,遍历)二叉树的                    应用(二叉排序树,判定树,博弈 ...

  9. windows server2012之部署HTTPS安全站点

    现在的互联网越来越重视网络安全方面的内容,像我们日常生活中浏览的网上银行网站等涉及安全的你都会发现有https 的标志出现,在URL前加https://前缀表明是用SSL加密的. 你的电脑与服务器之间 ...

  10. Opencv:10个步骤检测出图片中条形码

    1. 原图像大小调整,提高运算效率 2. 转化为灰度图 3. 高斯平滑滤波 4.求得水平和垂直方向灰度图像的梯度差,使用Sobel算子 5.均值滤波,消除高频噪声 6.二值化 7.闭运算,填充条形码间 ...