(C/C++学习)1.C++中vector的使用
说明:vector是C++中一个的容器类,它用于存放类型相同的元素,利用成员函数及相关函数可以方便的对元素进行增加或删除,排序或逆序等等。一个 vector 的容量(capacity)永远大于或等于其大小(size),一旦容量等于大小,便是满载,下次再有新增元素,整个 vector 容器就得重新申请一块更大的连续容量空间来存储所有的元素(包括原有的和新增的),然后原来的空间被释放。
注意:vector是一个动态数组,可以动态增加数组的大小(size)。所谓动态增加大小,并不是在原空间之后续接新空间(因为无法保证原空间之后尚有可配置的空间),而是一块更大的内存空间,然后将原数据拷贝到新空间,并释放原空间。因此,对 vector 的任何操作,一旦引起空间的重新配置,原空间的地址就变了。
1.包含的头文件:#include<vector>
2.构造函数
vector<T> v; //默认构造函数,T是数据类型
vector<T> v1(v.begin(),v.end()); //将容器v参数区间的元素拷贝到容器v1
vector<T> v2(n,elem); //构造函数将n个elem元素赋给v2
vector<T> v3(v1); //拷贝构造函数
vector<int> v4{1,2,3,4,5}; //指定元素初始化容器
//用数组初始化一个vector容器
int arr[] = {,,,};
vector<int> v4(arr,arr+sizeof(arr)/sizeof(int));
3.常用赋值函数
v.assign(v1.begin(),v1.end()); //将v1固定区间内的元素拷贝赋值给v
v.assign(n.elem); //将n个elem元素拷贝赋值给v
v = v1; //将v1赋给v(重载了等号操作符)
v.swap(v1); //将两个容器的元素进行交换
4.size操作
v1.si ze(); //返回v1中的元素个数
v1.empty(); //判断v1是否为空
v1.resize(int num,elem);
//重新指定容器的长度为num,若容器变长,则以elem填充新位置,反之末尾元素被删除(第二个参数有默认值)
v1.capacity(); //容器的容量
v1.reserve(int len); //容器预留len个元素容量,预留位置不初始化,元素不可访问,size为0
5.数据存取
v1.at(i); //返回索引i所指的数据,越界抛异常
v1[i]; //返回索引i所指的数据,越界报错
v1.front(); //返回容器的第一个数据
v1.back(); //返回容器的最后一个数据
6.插入和删除
v1.insert(pos,count,ele); //迭代器指向位置pos插入conut个元素ele
v1.push_back(); //尾部插入元素ele
v1.pop_back(); //删除尾部元素
v1.erase(pos1,pos2); //删除迭代器pos1到pos2之间的元素
5 v1.erase(pos); //删除迭代器指向的元素
v1.clear(); //删除容器中的所有元素
(C/C++学习)1.C++中vector的使用的更多相关文章
- PHP的学习--在Atom中使用XDebug(Mac)
之前写过一篇博客<PHP的学习--在sublime中使用XDebug(Ubuntu)>,讲了在Ubuntu系统 sublime 中配置 XDebug,其实配置好之后,我也很少用,原因有两点 ...
- c++中vector的用法详解
c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...
- 各种报错各种坑 webpack让我在学习的过程中一度想要放弃
由于拓展部分不是必须的,只是可以增强用户体验,但是有些时候页面给分页预留的位置不够,这个时候我们就可以通过设置来除去这一部分 子分区由两种创建方法,一种是不定义每个子分区子分区的名字和路径由分区决定, ...
- 【腾讯Bugly干货分享】深度学习在OCR中的应用
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5809bb47cc5e52161640c5c8 Dev Club 是一个交流移动 ...
- 学习网页制作中如何在正确选取和使用 CSS 单位
在 CSS 测量系统中,有好几种单位,如像素.百分比.英寸.厘米等等,Web 开发人员很难了解哪些单位在何处使用,如何使用.很多人习惯了总是使用同一种单位,但这一决定可能会严重限制你的设计的执行. 这 ...
- JavaScript学习13 JavaScript中的继承
JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式 ...
- JavaScript学习12 JS中定义对象的几种方式
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...
- C++的STL中vector内存分配方法的简单探索
STL中vector什么时候会自动分配内存,又是怎么分配的呢? 环境:Linux CentOS 5.2 1.代码 #include <vector> #include <stdio ...
- Java学习-045-目录中文件拷贝
挺晚的了,直接上码.敬请各位小主参阅,若有不足之处,敬请指正,非常感谢! 目录文件拷贝源码: /** * <strong>目录拷贝</strong><br> * & ...
随机推荐
- quick-cocos2d-x教程7:程序框架内framework文件夹分析
framework是整个框架执行时的实现代码.所以一定要细致看这个文件夹的文件.我们先从framework文件夹中的init.lua分析起走. init.lua文件里,框架初始化时,会自己主动加载下面 ...
- UIRecorder环境搭建及录制实现
前天看TesterHome提到UI录制做UI自动化,很感兴趣,前来学习学习. 参考:https://github.com/alibaba/uirecorder/blob/master/doc/zh-c ...
- 记录cocos2d-x3.0版本号更改内容官方说明
http://www.cocos2d-x.org/wiki/Release_Notes_for_Cocos2d-x_v300
- Android ListView 和 ScrollView 冲突问题
近期做一款APP,当中有一个类似微博的评论功能的界面,先是列出微博的正文内容和图片等.然后下边是评论. 一開始就想着用一个ScrollView把主要内容和评论区的ListView包起来.然后加入各个控 ...
- rk3288对于parameter参数文件的解析处理【转】
本文转载自:http://blog.csdn.net/groundhappy/article/details/56479694 rk3288有一个parameter文件. 类似于 FIRMWARE_V ...
- Thinkpad E450c开启Intel virtual technology
1.重启系统,一直按F12,进入系统设置后,按tab进入App Menu选项卡,选择Setup按回车进入BIOS设置 2.移动到Security选项 3.移动到Virtualization,按ente ...
- thinkphp方便分页的page方法
page方法也是模型的连贯操作方法之一,是完全为分页查询而诞生的一个人性化操作方法. 用法 我们在前面已经了解了关于limit方法用于分页查询的情况,而page方法则是更人性化的进行分页查询的方法,例 ...
- php 原生简版日志导出
<?phpfunction writeLog($msg){ $logFile = date('Y-m-d').'.txt'; $msg = date('Y-m-d H:i:s').' >& ...
- Win7的虚拟Wi-Fi
前几天无意中发现,Win7的硬件驱动里有个叫Microsoft Virtual WiFi Miniport Adapter的东东,从网上查了一下,可以用来组建临时网络,共享Internet.一块无线网 ...
- Discuze修改用户名长度限制
第一步,在网站 uc_client\model 目录下的 user.php文件中,找到如下代码: ? 1 if($len > 15 || $len < 3 || preg_match(&q ...