vector刘汝佳算法入门学习笔记
来源:互联网 发布:淘宝的windows激活码 编辑:程序博客网 时间:2024/06/07 02:05
//*****-*-----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所在木块的顶部。
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;
#include<string>
#include<vector>
#include<iostream>
using namespace std;
const int maxn=30;
int n;
vector<int> pile[maxn];
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;
}
}
}
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);
}
{
for(int i=h;i<pile[p].size();i++)
{
pile[p2].push_back(pile[p][i]);
}
pile[p].resize(h);
}
和数组相比的话:
【优点】
安全,不会不小心越界
可以利用标准库的很多功能,包括现成的成员函数和一些泛化算法
【缺点】
使用迭代器必须要小心
【优点】
安全,不会不小心越界
可以利用标准库的很多功能,包括现成的成员函数和一些泛化算法
【缺点】
使用迭代器必须要小心
VECTOR 在频繁的插入和删除 效率比较低
特别如果是大型的对象会增加很多的析构和拷贝
小型的对象和内置数据类型VECTOR 效率还是比较高的
所以如果是小型的对象和内置数据类型 可以用VECTOR 比LIST效率高
除非你有非常频繁的删除插入
0 0
- vector刘汝佳算法入门学习笔记
- 排序算法入门学习笔记
- Vector学习笔记
- vector 学习笔记
- STL学习笔记【vector】
- Vector学习笔记
- vector学习笔记
- 【STL】vector学习笔记
- vector的学习笔记
- vector 学习笔记
- Fisher vector学习笔记
- Vector学习笔记
- C++vector学习笔记
- Fisher vector学习笔记
- Fisher vector学习笔记
- 【STL 学习笔记】vector
- Fisher vector学习笔记
- vector学习笔记
- vc导出listcontrol界面值到excel最简单的例子
- 76-对象
- 多样化条目RecyclerView,以及多样化动画点击效果(附源码)
- 服务的生命周期-采用start的方式开启服务
- 结构体按学号大小输出学生信息
- vector刘汝佳算法入门学习笔记
- 77-创建对象实例
- 直接以管理员身份运行bat代码
- vs与opencv配置原理要点
- radio的选中
- Android中的二维码生成与扫描
- 图片转PDF
- 78-对象属性读写
- 关于JSON返回日期格式化的解决方案