PAT小技巧之vector的简单使用
来源:互联网 发布:mac 终端显示完整路径 编辑:程序博客网 时间:2024/05/17 01:09
vector的简单使用
PAT里让大家输入N组信息的时候基本上都会告诉你N的取值范围,我们都习惯了创建一个最大范围的数组,然后再用for循环来完成。可是有的时候题目没有告诉你N的范围,我们就不知道刚开始要创建多大的数组了,创建小了不够,创建太大又可能超内存。因此我们希望能创建一个动态的数组,可以自动调整自己的大小。我们当然可以用底层的函数realloc自己写一个出来,但是其实系统已经提供了一种现成的叫vector的模版
vector可以翻译成矢量,他支持很多实用的算法比如排序
使用vector前要#include“vector”
vector要怎么用呢?举个栗子
我们如果想创建一个int型的vector,然后把几个数字加进去,然后输出vector里的数字。
#include<iostream>#include<string>#include<vector>using namespace std;int main(){vector<int> v;int a = 1, b = 2, c = 3;v.push_back(a);//此时vector的大小为1v.push_back(b);//此时vector的大小为2v.push_back(c);//此时vector的大小为3cout << v[0] <<" "<< v[1]<<" " << v[2];}
可以看到vector的使用方法和数组是一样的,v[0]就代表v矢量的第0个元素。
我们还可以在初始化的时候一次加入多个元素
#include<iostream>#include<string>#include<vector>using namespace std;int main(){int a[5] = { 1,2,3,4,5 };vector<int> v(a,a+5);//或者vector<int> v(&a[0],&a[4]+1);int i;cout << v[4];}注意啦!如果要想把a[0]到a[4]都加入到vector里,那么初始化的时候就要写成v(&a[0],&a[4]+1)而不是v(&a[0],&a[4]),没错结尾就是要多加1。
还可以用pop_back函数删除vector最后一个元素
#include<iostream>#include<string>#include<vector>using namespace std;int main(){int a[5] = { 1,2,3,4,5 };vector<int> v(a,a+5);int i;for (i = 0; i < v.size();i++)cout << v[i]<<" ";cout << endl;v.pop_back();//把最后面的5删掉for (i = 0; i < v.size(); i++)cout << v[i] << " ";}
vector不仅可以是int ,char这种基本类型,还可以是自定义的结构体;
比如vector<mystruct> v;
不过要注意,结构体不能直接用sort排序,你要在sort函数里第3个参数加上一个自己定义的比较函数。
vector还支持用sort函数排序哦,非常实用,以后不用自己手写冒泡快速之类的排序了。
int a[5]={1,2,3,4,5}
vector<int> v(a,a+5);
sort(v,v+5)//或者参数用迭代器,sort(v.begin(),v.end())
sort和我之前讲过的一样,第二个参数要多加1。
最后列出vector类其他的一些函数操作
c.clear() 移除容器中所有数据。
c.empty() 判断容器是否为空。
c.erase(pos) 删除pos位置的数据
c.erase(beg,end) 删除[beg,end)区间的数据
c.front() 传回第一个数据。
c.insert(pos,elem) 在pos位置插入一个elem拷贝
c.pop_back() 删除最后一个数据。
c.push_back(elem) 在尾部加入一个数据。
c.resize(num) 重新设置该容器的大小
c.size() 回容器中实际数据的个数。
c.begin() 返回指向容器第一个元素的迭代器
c.end() 返回指向容器最后一个元素的后一个的迭代器
- PAT小技巧之vector的简单使用
- PAT小技巧之四舍五入
- 自创测试小技巧之vector的显示
- Source Insight 简单的使用小技巧
- vector的简单使用
- Vector的简单使用
- Vector的简单使用
- Vector的简单使用
- Vector的简单使用
- vector的简单使用
- STL之vector的使用四(vector的查找、空、及其它技巧)
- 电脑小白之简单的入侵电脑技巧
- STL------vector的简单使用
- javascript :简单的小技巧
- 一些简单的小技巧
- Git 使用之小技巧
- C++ 中vector的使用技巧
- Android [小技巧] CSV文件简单使用
- 不同目录cookie共享的问题解决
- [论文解读] Voting for Voting in Online Point Cloud Object Detection
- Linux基础之终端提示符~/ / # $
- 【Unity Shader入门精要】— 渲染流水线
- scanf输入
- PAT小技巧之vector的简单使用
- ubuntu静态IP配置
- 面试_Java知识总架构
- [论文解读] Monocular 3D Object Detection for Autonomous Driving Xiaozhi
- 设计模式之模板模式(1)
- [论文解读] Pedestrian Detection Combining RGB and Dense LIDAR Data
- C语言学习笔记——排序
- Sqrt(x)--LeetCode
- 前端编码规范及 SASS、SCSS和CSS的关系