c++ vector基本函数、排序、查找用法
vector用法目录:
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的一部分内容,后续会逐渐补充,不足请评论)
c++ vector基本函数、排序、查找用法的更多相关文章
- C++算法库学习__std::sort__对 vector进行排序_排序后就可以进行使用std::lower_bound进行二分查找(查找第一个大于等于指定值的迭代器的位置)__std::unique
std::sort 对vector成员进行排序; std::sort(v.begin(),v.end(),compare); std::lower_bound 在排序的vector中进行 ...
- NX二次开发-C++的vector排序去重用法
#include <algorithm> //vector排序去重 sort( BoxNum.begin(), BoxNum.end()); BoxNum.erase(unique(Box ...
- [转] C++的STL库,vector sort排序时间复杂度 及常见容器比较
http://www.169it.com/article/3215620760.html http://www.cnblogs.com/sharpfeng/archive/2012/09/18/269 ...
- L3-002 特殊堆栈 (30分) vector容器的模拟、vector容器的一些用法
vector容器的简单应用,我们可以用vector维护一个有序数组,每次对要插入的数用upper_bound或者lower_bound来 为这个数找一个应该插入到vector的位置.另外再找一个数组来 ...
- 转载:Hadoop排序工具用法小结
本文转载自Silhouette的文章,原文地址:http://www.dreamingfish123.info/?p=1102 Hadoop排序工具用法小结 发表于 2014 年 8 月 25 日 由 ...
- Sublime文本排序&查找重复行&删除重复行
排序 按F9或者选择菜单:Edit > Sort Lines,对每行文本进行排序 查找重复行 排序好后,按Ctrl+F,调出查找面板 查找字符串: ^(.+)$[\r\n](^\1$[\r\n] ...
- 使用STL库sort函数对vector进行排序
使用STL库sort函数对vector进行排序,vector的内容为对象的指针,而不是对象. 代码如下 #include <stdio.h> #include <vector> ...
- STL vector+sort排序和multiset/multimap排序比较
由 www.169it.com 搜集整理 在C++的STL库中,要实现排序可以通过将所有元素保存到vector中,然后通过sort算法来排序,也可以通过multimap实现在插入元素的时候进行排序.在 ...
- 从vector容器中查找一个子串:search()算法
如果要从vector容器中查找是否存在一个子串序列,就像从一个字符串中查找子串那样,次数find()与find_if()算法就不起作用了,需要采用search()算法:例子: #include &qu ...
- Java进阶(三十九)Java集合类的排序,查找,替换操作
Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...
随机推荐
- 就为了一个原子操作,其他CPU核心罢工了
i++问题 "阿Q赶快回去吧,隔壁二号车间的虎子说我们改了他们的数据,上门来闹事了" 由于老K的突然出现,我不得不提前结束与小黑的交流,赶回了CPU一号车间. 见到我回来,虎子立刻 ...
- 走迷宫(二):在XX限制条件下,是否走得出
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1728 解题方法:BFS+访问数组vis[][]; 给你起点位置和终点位置,让你判断能不能到达,并且拐弯 ...
- 第几天?(hdu2005)
第几天那个代码模板可以保存起来. #include<stdio.h> #include<math.h> #define PI 3.1415927 using namespace ...
- 关于pytest使用allure生成报告时,报一堆警告和缺少XX模块
因为最新的pytest 支持*.josn的用例报告,卸载旧的模块使用新的即可: 需要移除旧模块:pip uninstall pytest-allure-adaptor, 并安装:pip install ...
- 关于VMware问题:无法获得 VMCI 驱动程序的版本: 句柄无效。驱动程序“vmci.sys”的版本不正确
有的童鞋可能安装虚拟机时出现了下边这样的错误,莫慌,下面咋们来解决!!! 1.首先,找到你的安装虚拟机的目录下有一个.vmx的文件 找到这个文件,用编辑器打开,将该值改为FALSE即可!
- [推荐]大量 Blazor 学习资源(二)
继上一篇<[推荐]大量 Blazor 学习资源(一)>之后,社区反应不错,但因个人原因导致这篇文章姗姗来迟,不过最终还是来了!这篇文章主要收集一些常用组件.书籍和电子书. 资料来源:htt ...
- [Unity2d系列教程] 004.Unity如何调用ios的方法(SDK集成相关)
和上一篇类似,我们同样希望Unity能够直接调用IOS底层的代码,那么我们就需要研究怎么去实现它.下面让我来带大家看一个简单的例子 1.创建.h和.m文件如下 .h // // myTest.m // ...
- 跟着阿里学JavaDay01——Java编程环境搭建
一.下载并完成JDK的安装 我们要学习Java就需要下载JDK.因为JDK是Java的开发工具. JDK的获取可以通过官方网站下载:JDK下载地址(这里我们下载Java SE10的版本) JDK下载完 ...
- php CURL 发送请求封装
cURL可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 ...
- Web-从Java Request对象到HTTP协议
https://mp.weixin.qq.com/s/PjcA22STEDGwRxVQweObQQ Java Web中的Request对象是哪里来的?Response对象的角色是什么? Java We ...