如果不清楚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>常用操作的更多相关文章

  1. R语言Data Frame数据框常用操作

    Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...

  2. 转载:R语言Data Frame数据框常用操作

    Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...

  3. 【三】用Markdown写blog的常用操作

    本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...

  4. php模拟数据库常用操作效果

    test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...

  5. Mac OS X常用操作入门指南

    前两天入手一个Macbook air,在装软件过程中摸索了一些基本操作,现就常用操作进行总结, 1关于触控板: 按下(不区分左右)            =鼠标左键 control+按下        ...

  6. mysql常用操作语句

    mysql常用操作语句 1.mysql -u root -p   2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...

  7. nodejs配置及cmd常用操作

    一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...

  8. Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理

    摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■  详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...

  9. python 异常处理、文件常用操作

    异常处理 http://www.jb51.net/article/95033.htm 文件常用操作 http://www.jb51.net/article/92946.htm

随机推荐

  1. 下面总结一些在HTML中经常使用到的快捷键

    使用的编辑器是VS code: 首先是很基础的: ctrl+s  :保存: ctrl+a  :  全选: ctrl+c , ctrl+c , ctrl+v : 剪切,复制,粘贴: ctrl+z ,ct ...

  2. python文件封装成*.exe

    python文件封装成*.exe文件(单文件和多文件) 环境:win10 64位 python3.7 原文: https://www.cnblogs.com/jackzz/p/9431923.html ...

  3. RocketMQ 源码分析之路由中心(NameServer)

    你可能没有看过 RocketMQ 的架构图,没关系,一起来学习一下,RocketMQ 架构图如下: 在 RocketMQ 中,有四个角色: Producer:消息的生产者,每个 MQ 中间件都有. C ...

  4. 面试总结:关于MySQL事务的10个问题常见面试问答(FQA)

    学习关系型数据库MySQL是很好的切入点,大部分人工作中用惯了CRUD,对面试官刨根问底的灵魂拷问你还能对答如流吗?我们有必要了解一些更深层次的数据库基础原理. 文章每周持续更新,各位的「三连」是对我 ...

  5. STM32F103ZET6 GPIO的使用

    1.GPIO简介 STM32F103ZET6有多个GPIO组,如GPIOA.GPIOB.GPIOC...等等.每个GPIO组具有16个IO口. GPIO组的寄存器都是类似的,每个GPIO组都有2个32 ...

  6. MyBatis 学习笔记(1)

    MyBatis 的基本构成 SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成 SqlSessionFactory(工厂接口) SqlSessionFactor ...

  7. python之excel的封装

    python之excel的封装 将所有excel的操作都使用面向对象的思维进行封装,即将所有操作都放入一个类中即为封装. 它将excel的处理极大程度的进行了简化操作 封装前需要先处理的操作: 1.在 ...

  8. Git常用命令(一)

    $ git init 初始化仓库(会生成一个隐藏文件.git) $ git add + (文件名) 实现对指定文件的跟踪 $ git commit 提交更新$ git clone + URL 克隆远程 ...

  9. javascript入门 之 ztree (六 结点的点击和展开/折叠事件)

    1.注意: 测试点击事件时,如果要测试取消选中和追加选中,如果按住ctrl和win键无用,则需要先用鼠标左键按住,然后,在松开左键的前几毫秒按住ctrl键便可! <!DOCTYPE html&g ...

  10. 21.1 Math(数学运算)方法使用 、工具类

    package day21_static.meathDemo; //Math: 包含一些基本的数学运算方法 //从api中搜Math,它都用的static修饰. public class MethDe ...