(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> * & ...
随机推荐
- 在shell脚本中使用函数的返回值
#!/bin/bash - function mytest() { echo "arg1 = $1" if [ $1 = "1" ] ;then return ...
- [React Storybook] Get started with Storybook for React
Storybook is a UI component development environment for React, Vue, and Angular. With that, you can ...
- Sahara中的数据模型
声明: 本博客欢迎转载.但请保留原作者信息,并请注明出处! 作者:郭德清 团队:华为杭州OpenStack团队 本文主要是介绍下Sahara中一些常见的数据模型. 1.Config 用于描写叙述配置信 ...
- 初触Python,关于pyquery解析html(百度贴吧)
一直听同事说Python是个奇妙的语言,上周在逛知乎的时候深受这个话题的启示. 能利用爬虫技术做到哪些非常酷非常有趣非常实用的事情? 先是说到IDE的选择,作为python新人,尽管知道mac终端自带 ...
- Hadop使用Partitioner后,结果还是一个文件,怎样解决??
近期看了一下partitioner.于是照着写了一个列子.最后发现程序并没有将结果分开写入对应的文件,结果还是一个文件,于是乎感觉是不是没实用集群去执行程序,发现control中还是本地执行的代码: ...
- Extjs TabPanel页签转换事件
listeners : { tabchange : function(tp, p) { var allmapDIV = document.getElementById("allmap&quo ...
- B1051 受欢迎的牛 tarjan缩点
就是一道tarjan缩点的板子,之前在洛谷做过.但是我发现一个事,就是函数里面有一句话: void tarjan(int x) { dfn[x] = low[x] = ++tot; str[++top ...
- 认证与授权协议对比:OAuth2、OpenID、SMAL
认证授权是目前大多数系统都必须要实现都功能,认证就是验证用户都身份,授权就是验证身份后对受限资源的访问控制.最开始是单个平台要做,后来在互联网时代到来,一个账户可登陆多个平台,然后是各种开放平台账户共 ...
- Windows7下caffe-ssd-microsoft下编译
整个编译可谓漫长 编译了两天 网上教程也很多 但是也很杂 遇到各种错误 总归是编完了 1.下载Windows版本的Caffe-SSD源码 下载链接:https://github.com/conner9 ...
- Cloudera Manager安装之利用parcels方式(在线或离线)安装单节点集群(包含最新稳定版本或指定版本的安装)(添加服务)(Ubuntu14.04)(四)
.. 欢迎大家,加入我的微信公众号:大数据躺过的坑 免费给分享 同时,大家可以关注我的个人博客: http://www.cnblogs.com/zlslch/ 和 http ...