终于把自己的个人博客安排上啦!

欢迎访问我的个人博客 XJHui's Blog。

vector用法目录:

1、基本用法

2、vector的删除操作

3、vector的sort排序

4、翻转vector中的所有元素

5、find()函数的用法

6、vector实战(这里写的是我在最开始用vector时候犯的错误)


1、基本用法:

头文件:

#include<vector>

定义vector:

整数型:    vector<int>a;
字符型:    vector<char>a;
字符串型:  vector<string>a; (注意字符串型输入输出用cin和cout)固定vector的大小:vector<int>a(105);

在容器最后存入新元素:

for(int i=0;i<10;i++){b.push_back(i);
}

将字符数组中的数据赋值给容器:

1、遍历赋值:char a[MAX+5];vector<char>vc;cin>>a;int la=strlen(a);for(int i=0;i<la;i++) vc.push_back(a[i]);
2、定义容器时赋值:char a[MAX+5];cin>>a;int la=strlen(a);vector<char>vc(a,a+la);

判断容器的长度:

printf("%d\n",b.size());

遍历容器中元素:

1、遍历输出    for(int i=0;i<vc.size();i++)printf("%c",vc[i]);printf("\n");
2、错误示例:for(int i=vc.begin();i<vc.end();i++){cout<<vc[i]<<" ";}cout<<endl;

清空容器、判断是否为空、删除最后元素:

清空容器: a.clear();//清空a中的元素
判断容器是否空:a.empty();//判断a是否为空,空则返回ture,不空则返回false
删除容器最后的元素:  a.pop_back(); ///括号内不可以添加index删除指定元素

2、vector的删除操作

vector很好的一点就是可以实现删除操作,用它来做模拟很好实现。

1、函数使用:vc.erase(vc.begin(),vc.end()); ///vc.erase()可以删除一个或多个元素
2、说明:vc.erase()函数中添加的地址范围是左闭右开区间,删除内容后,如果后面还有元素,会自动补全空位。
3、注意:///vc.erase()函数中不是直接加要删除的内容,下面例子是错误的。vc.erase('a');          

3、vector的sort排序(加#include<algorithm>头文件)

将元素从小到大的顺序排列(默认):

int c1[]={1,3,11,2,66,22,-10};
vector<int>c(c1,c1+7); ///赋初值
sort(c.begin(),c.end());
for(int i=0;i<c.size();i++){printf("%d ",c[i]);
}
printf("\n");

重写cmp函数按要求排序:

#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(int x,int y) ///cmp函数传参的类型不是vector<int>型,是vector中元素类型,即int型
{return x>y;
}
int main()
{int c1[]={1,3,11,2,66,22,-10};vector<int> c(c1,c1+7);sort(c.begin(),c.end(),cmp);for(int i=0;i<c.size();i++){printf("%d ",c[i]);}printf("\n");return 0;
}

vector<node>(结构体)的cmp函数与其类似

4、翻转vector中的所有元素:

int d1[]={1,3,11,2,66,22,-10};
vector<int> d(d1,d1+7);reverse(d.begin(),d.end()); ///不是d.reverse()for(int i=0;i<d.size();i++){printf("%d ",d[i]);
}
printf("\n");

5、find()函数的用法:

int temp1[]={ 1,3,2,4,5,0 };
vector<int> temp(temp1,temp1+6);vector<int>::iterator it=find(temp.begin(),temp.end(),3);///返回的是地址int index=&*it-&temp[0];///放入迭代器中得到容器中的位置printf("%d\n",index);

6、vector实战:(这里写的是我在最开始用vector时候犯的错误)

  vector没申请不能直接赋值

    vector<int>a;for(int i=0;i<10;i++){a[i]=5; ///vector[i]根本没被申请,所以不可以直接赋值}
    vector<int>a;for(int i=0;i<10;i++){a.push_back(i); ///申请a[3]后,下面可以直接改变它的值}a[3]=6;
    vector<int>a(10);///先申请一个大小为10的向量后也可以直接改变a[3]的值a[3]=6; 

(上面只是vector的一部分内容,后续会逐渐补充,不足请评论)

如果对博客搭建感兴趣可以看我另一篇博客:Hexo博客框架攻略

也欢迎到我的个人博客评论、留言:XJHui's Blog

c++ vector基本函数、排序、查找用法相关推荐

  1. 数据结构与算法--查找与排序另类用法-旋转数组中的最小数字

    查找与排序 查找 查找与排序都在程序设计中常被用到的算法.查找相对而言简单,一般都是顺序查找,二分查找,哈希表查找,和二叉排序树查找.其中二分查找是我必须熟悉的一种. 哈希表和二叉排序树主要点在于他的 ...

  2. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  3. C++的STL库,vector sort排序时间复杂度 及常见容器比较

    http://www.cnblogs.com/sthv/p/5511921.html http://www.169it.com/article/3215620760.html http://www.c ...

  4. Python中的基本函数及其常用用法简析

    分享Python中的基本函数及其常用用法简析,首先关于函数的解释函数是为了达到某种目的而采取的行为,函数是可重复使用的,用来实现某个单一功能或者功能片段的代码块,简单来说就是由一系列的程序语句组成的程 ...

  5. Boost:在GPU上对int的std :: vector进行排序

    Boost:在GPU上对int的std :: vector进行排序 实现功能 C++实现代码 实现功能 Boost的compute模块,在GPU上对int的std :: vector进行排序 C++实 ...

  6. 软件设计师16-数据结构02(排序/查找)

    排序 1 衡量排序算法质量 1)时间效率:排序速度 2)空间效率:占内存辅助空间的大小 3)稳定性:相等的两个数,排序后次序不变 排序方法 1 插入排序 1)直接插入排序:将第二到n个序列,依次与前n ...

  7. vector<vector>排序

    已知:每类奖励下面不止四种,是不确定数量(至少一种).要求有可领取奖励的块上移到顶,如果有多个可领奖励块,它们的前后顺序和原来一样.这里每个标题栏和可领取块都是一张map里面的元素.如下图: 解:1. ...

  8. SWUSTOJ #616 排序查找

    SWUSTOJ #616 排序查找 题目 输入 输出 样例输入 样例输出 源代码 题目 用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩整数用scanf 输入,输入的成绩在[0,100]之 ...

  9. sort函数进行二维vector的排序

    利用一组数据来说明,sort函数进行二维vector的排序: envelopes = [[5,4],[6,4],[6,7],[2,3]] 代码如下: #include<iostream> ...

  10. java vector的排序_Java用vector容器排序

    /** * 功能:定义一个Student数组,其中保存学生的基本信息,包括姓名,学号,性别,还有三门课的成绩 * 和课程对应的学分,计算出学分积,降序排序 * 时间:2014年6月4日16:33:24 ...

最新文章

  1. framer x使用教程_如何使用Framer Motion将交互式动画和页面过渡添加到Next.js Web应用程序
  2. KVM虚拟机迁移到VMWare
  3. 浅析精准网络推广的基础内容
  4. c语言六套,C语言编程笔试题(第六套)
  5. 28.课时28.【Django模块】with标签使用详解(Av61533158,P28)
  6. docker-machine create --driver virtualbox myvm1 创建失败
  7. java异常网,Java异常实践事项
  8. Python源码深度解析—引用计数
  9. 81. $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
  10. 安川机器人仿真软件安装
  11. DiskPart-删除磁盘分区
  12. 计算机上如何保存ico格式,PS怎么保存ico格式
  13. 4sum java_4Sum - hcx - ITeye博客
  14. 【HiFlow】腾讯云场景连接器
  15. 用TensorFlow实现非线性支持向量机
  16. 计算机科学大师唐纳德,现代计算机科学的鼻祖,编程界的上帝,视全世界的码农当作艺术家...
  17. 真实世界的Haskell(影印版)
  18. 网络安全的自动检测与预警
  19. 终于有人讲透了芯片是什么(设计-晶圆-封测)
  20. Capstone CS5216方案设计|DP转HDMI1080P转接线设计|CS5216设计电路图

热门文章

  1. 航空研发软件移机时使用符号连接节省Windows系统C盘空间占用
  2. 营业执照注册号是不是统一社会信用代码?
  3. RTD原理及其温度采集
  4. canvas 画图 android,Android 中的Canvas画图
  5. OpenEmbedded 简介
  6. Elastic:关于索引生命周期ILM的一些试验;warm,cold,delete节点中min_age设置的是增量还是累计值
  7. Chemistry Methods | Image2SMILES+: Transformer-Based Molecular Optical Recognition Engine
  8. 如何做一个2D 横版过关类游戏
  9. mvp的全称_MVP英文全称是什么
  10. 修改weblogic服务器ip地址,修改weblogic服务器ip地址