<vector>常用操作
如果不清楚vector是什么的话就去看我的另一篇随笔吧:https://www.cnblogs.com/buanxu/p/12791785.html
进入正题,vector和string一样,也是一种顺序容器,并且它俩的成员函数及特性也都差不多类似;它俩的区别就在于string只能存放字符,而vector可以存放各种数据类型。
vector在标准库中,是一个模板类和函数库,能操作多种数据结构和算法。再说一下vector的特性,由于vector重载了[ ],所以它可以通过下标随机访问;并且它在
末端进行插入、删除操作比较快,不过只能push和pop;而由于vector是顺序的,它在内存中占用了连续的内存单元,所以在中间插入、删除的时候很慢。另外,
当向vector容器里动态添加的数据超过vector默认分配的大小时,就会进行整体的拷贝和释放,重新分配内存,此时原来vector容器的迭代器就会失效,并且vector在进行插入、
删除操作的时候,迭代器也会失效。
下面介绍一下vector常用的操作
1. vector容器的构造函数
vector<int> v; 声明一个vector容器v。
vector<int> v(n);声明一个大小为n的vector容器v,且此方法只适用于顺序容器。
vector<int> v(n,a);声明一个大小为n的vector容器v,并用a来初始化(用a填充v)。
vector<int> v{1,2,3,4,5} 或 vector<int> v={1,2,3,4,5} 初始化一个容器,类似于数组,在vs2010及以下的版本不能用此构造方法,2010以上的我也没用过,所以不知道。
特别要注意,容器在没有初始化和声明大小的时候,是不可以通过下标来进行复制的,如v[i]=3,这是错误的,编译会报错越界。只有在声明了容器大小或用push_back()向容
器里添加数据后,才可以用下标进行访问,并且下标不能越界。内存不够的话就用resize()分配好空间以后再用下标访问。
2. vector容器之间的复制
下面的例子中,假设v2都已经初始化过了
(1) vector<int> v1;
v1=v2; //可以直接赋值
(2) vector<int> v1(v2); //声明的时候直接把v2拷贝给v1
(3) vector<int> v1;
v1.swap(v2); //交换两个容器,不过需要构建临时对象,一个拷贝构造,两次赋值操作
(4) vector<int> v1;
v1.assign(v2.begin(), v2.end() ); //把v2指定区间内的数据赋给v1,会覆盖掉v1中的数据。assign()还有另外一个功能,v1.assign(n,a),即把v1中前5个元素都赋值为a。
3. vector常用的成员函数
push_back();向vector容器的末尾位置添加字符
push_pop(); 把vector容器里的末尾元素弹出容器,即删除操作
begin();返回一个指向容器中第一个元素的迭代器
end();返回一个指向容器中最后一个元素的下一个位置的迭代器
rebegin();反向迭代,返回指向最后一个元素的下一个位置的迭代器
rend(); 反向迭代,返回指向第一个元素的的迭代器
front();返回容器中第一个元素的引用,可以对其进行存取及修改操作
back();返回容器中最后一个元素的引用,可以对其进行存取及修改操作
at();此成员函数有参数,参数是下标。作用类似于[ ]操作符,用来对指定下标位置的元素进行随机访问,可进行存取及修改操作
resize(int n, char c);调整容器有效数据尺寸,若尺寸变大,则自动截掉多余的数据;若尺寸变大,则空出的用该函数的第二个参数填充,会影响容器的size。
reserve(); 为容器预留足够的空间,避免了不必要的重复分配,分配空间大于等于函数的参数,会影响capacity。
v1.swap(v2);交换容器v1和v2
clear();清空当前容器
empty();判断容器是否为空,为空返回1,非空返回0
<vector>常用操作的更多相关文章
- R语言Data Frame数据框常用操作
Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...
- 转载:R语言Data Frame数据框常用操作
Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...
- 【三】用Markdown写blog的常用操作
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...
- php模拟数据库常用操作效果
test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...
- Mac OS X常用操作入门指南
前两天入手一个Macbook air,在装软件过程中摸索了一些基本操作,现就常用操作进行总结, 1关于触控板: 按下(不区分左右) =鼠标左键 control+按下 ...
- mysql常用操作语句
mysql常用操作语句 1.mysql -u root -p 2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...
- nodejs配置及cmd常用操作
一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■ 详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...
- python 异常处理、文件常用操作
异常处理 http://www.jb51.net/article/95033.htm 文件常用操作 http://www.jb51.net/article/92946.htm
随机推荐
- flask中温柔显示404等错误
写下下面两个视图函数,然后在模板中写下错误时展现的内容,当然模板名,函数名是可以改的哟@app.errorhandler(404)def page_not_found(error): return r ...
- MATLAB——颜色梯度显示
一.colormap函数 figure surf(peaks) k=; mycolor=spring(k); colormap(mycolor); spring是颜色的分类.spring(k)生成k个 ...
- Day20-tomcat
tomcat 一.Java及tomcat简介 二.安装JDK及tomcat 1.安装jdk 安装jdk很简单,首先下载网上的jdk安装包,我这边下载的是jdk-8u221-linux-x64.tar. ...
- B 方块消消乐
时间限制 : - MS 空间限制 : - KB 评测说明 : 1s,128m 问题描述 何老板在玩一款消消乐游戏,游戏虽然简单,何老板仍旧乐此不疲.游戏一开始有n个边长为1的方块叠成一个高为n的 ...
- linux下zip/unzip详解
linux下zip_unzip详解 命令列表:zip -q (quiet) -r (recursive) -0(level0-level9) -e (encrypt) - ...
- Pointer Lock API(1/3):Pointer Lock 的总体认识
前言 指针锁定(Pointer Lock),以前也叫鼠标锁定,提供了基于鼠标随时间的移动(如deltaΔ)的输入方法,不仅仅是视窗区域鼠标的绝对位置.指针锁定让你能够访问原始的鼠标移动,将鼠标事件的目 ...
- Java第二十四天,线程安全
线程安全 1.定义 多线程访问共享数据,会产生线程安全问题. 2.代码模拟 卖票Ticked类: package com.lanyue.day22; public class Person { pub ...
- 2017蓝桥杯取位数(C++B组)
题目: 标题:取数位求1个整数的第k位数字有很多种方法.以下的方法就是一种.// 求x用10进制表示时的数位长度 int len(int x){ if(x<10) return 1; retur ...
- Property [*****] not found on type [com.erp.pojo.ErpSupplier]
我实体类里用的是 springboot 里@Slf4j @Data 注解式写的 这样可以减少代码量 ,但是遇到一个问题影响我好长时间 出现了这个错误 Property [*****] not ...
- TensorFlow保存、加载模型参数 | 原理描述及踩坑经验总结
写在前面 我之前使用的LSTM计算单元是根据其前向传播的计算公式手动实现的,这两天想要和TensorFlow自带的tf.nn.rnn_cell.BasicLSTMCell()比较一下,看看哪个训练速度 ...