<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
随机推荐
- 下面总结一些在HTML中经常使用到的快捷键
使用的编辑器是VS code: 首先是很基础的: ctrl+s :保存: ctrl+a : 全选: ctrl+c , ctrl+c , ctrl+v : 剪切,复制,粘贴: ctrl+z ,ct ...
- python文件封装成*.exe
python文件封装成*.exe文件(单文件和多文件) 环境:win10 64位 python3.7 原文: https://www.cnblogs.com/jackzz/p/9431923.html ...
- RocketMQ 源码分析之路由中心(NameServer)
你可能没有看过 RocketMQ 的架构图,没关系,一起来学习一下,RocketMQ 架构图如下: 在 RocketMQ 中,有四个角色: Producer:消息的生产者,每个 MQ 中间件都有. C ...
- 面试总结:关于MySQL事务的10个问题常见面试问答(FQA)
学习关系型数据库MySQL是很好的切入点,大部分人工作中用惯了CRUD,对面试官刨根问底的灵魂拷问你还能对答如流吗?我们有必要了解一些更深层次的数据库基础原理. 文章每周持续更新,各位的「三连」是对我 ...
- STM32F103ZET6 GPIO的使用
1.GPIO简介 STM32F103ZET6有多个GPIO组,如GPIOA.GPIOB.GPIOC...等等.每个GPIO组具有16个IO口. GPIO组的寄存器都是类似的,每个GPIO组都有2个32 ...
- MyBatis 学习笔记(1)
MyBatis 的基本构成 SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成 SqlSessionFactory(工厂接口) SqlSessionFactor ...
- python之excel的封装
python之excel的封装 将所有excel的操作都使用面向对象的思维进行封装,即将所有操作都放入一个类中即为封装. 它将excel的处理极大程度的进行了简化操作 封装前需要先处理的操作: 1.在 ...
- Git常用命令(一)
$ git init 初始化仓库(会生成一个隐藏文件.git) $ git add + (文件名) 实现对指定文件的跟踪 $ git commit 提交更新$ git clone + URL 克隆远程 ...
- javascript入门 之 ztree (六 结点的点击和展开/折叠事件)
1.注意: 测试点击事件时,如果要测试取消选中和追加选中,如果按住ctrl和win键无用,则需要先用鼠标左键按住,然后,在松开左键的前几毫秒按住ctrl键便可! <!DOCTYPE html&g ...
- 21.1 Math(数学运算)方法使用 、工具类
package day21_static.meathDemo; //Math: 包含一些基本的数学运算方法 //从api中搜Math,它都用的static修饰. public class MethDe ...