如果不清楚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. iOS 内置图片瘦身

    一.iOS 内置资源的集中方式 1.1 将图片存放在 bundle 这是一种很常见的方式,项目中各类文件分类放在各个 bundle 下,项目既整洁又能达到隔离资源的目的.采用 bundle 的加载方式 ...

  2. unix中数据缓冲区高速缓冲的设计

    目录 1. 概述 2. 缓冲区的设计 2.1 缓冲区头部 2.2 缓冲区的结构 2.3 缓冲区的检索算法 2.3. 申请一个缓冲区算法 getblk 2.3.2 释放一个缓冲区算法 brelse 2. ...

  3. 【WPF学习】第六十二章 构建更复杂的模板

    在控件模板和为其提供支持的代码之间又一个隐含约定.如果使用自定义控件模板替代控件的标准模板,就需要确保新模板能够满足控件的实现代码的所有需要. 在简单控件中,这个过程比较容易,因为对模板几乎没有(或完 ...

  4. 【Redis】集群教程(Windows)

    概述 Redis集群数据分片 Redis集群节点通讯 环境准备 搭建Redis集群 测试Redis集群 概述 Redis Cluster provides a way to run a Redis i ...

  5. 一夜搞懂 | Java 内存模型与线程

    前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 GIthub 博客 学习导图 一.为什么要学习内存模型与线程? 并发处理的广泛应用是 Amdah1 定律代替摩尔定律成为计 ...

  6. 关于 Vue 中 我对中央事线管理器的(enentBus)误解

    由于这段时间公司比较闲,就对vue 中的一些模糊的点做了一些加强,突然就想到了常挂在嘴边兄弟组件传值 我理解的兄弟组件的传值是可以跨理由传值的,比如我从http://localhost:8080/lo ...

  7. 从谷歌 GFS 架构设计聊开去

    伟人说:“人多力量大.” 尼古拉斯赵四说:“没有什么事,是一顿饭解决不了的!!!如果有,那就两顿.” 研发说:“需求太多,人手不够.” 专家说:“人手不够,那就协调资源,攒人头.” 释义:一人拾柴火不 ...

  8. jQuery实现回车键抬起触发事件

    $(function(){ //回车键按下触发 $(document).keydown(function(event){ if(event.keyCode==13){ alert("niha ...

  9. CTF中常用的php伪协议利用

    1.file:// 作用: 用于访问文件(绝对路径.相对路径.网络路径) 示例: http://www.xx.com?file=file:///etc/passsword 2.php:// 作用:访问 ...

  10. Redis 笔记(六)—— ZSET 常用命令

    常用命令 命令 用例和描述 ZADD ZADD key-name score member [score member ...] —— 将带有分值的成员添加到 HSET 中 ZREM ZREM key ...