vector(容器)就像数组一样,但比数组强大很多,下面介绍一下vector常用的几种方法:

一、对于vector自身的处理,包括赋初始值,复制等等;

  vector<int> v1 ;

  vector<int> v2( 5 , 10) ;      // v2 中有5个元素,每个元素都是10

  vector<int> v3( v2 )          // 将 v2 复制给 v3

  vector<int> v4( v3.begin() , v3.end() )   // 同样是将 v3 复制给 v4 ;

  int a[] = {1,2,3,4,5} ;

  vector<int> v5( a , a + sizeof(a) / sizeof(int) )  // 将数组 a 中的元素复制给 v5 ;

二、vector::operator ;

  vector<int> v1( 5 , 10 ) ;

  vector<int> v2 ;

  v2 = v1 ;           // 相当于将 v1 复制给 v2 ;

三、vector 中的 begin 和 end 函数 ;

  begin 和 end 函数返回的都是当前指针并不是容器中的数值;

  存储当前返回指针的变量用:vector<int>::iterator iter ;

  vector<int> v( 5 , 10 ) ;

  *(v.begin())    //  输出第一个元素 ;

  *(v.end() - 1)   // 输出最后一个元素 ;

四、vector 中的 rbegin 和 rend 函数 ;

  rbegin 和 rend 函数返回的同样是指针,不过和 begin、end 返回的不同,一个是从前往后返回,一个是从后往前返回;

  存储当前返回指针的变量用: vector<int>::reverse_iterator iter ;

  *(v.rbegin())   // 输出最后一个元素 ;

  *(v.rend() - 1) //  输出第一个元素 ;

五、vector 中的 size、push_back、pop_back、inseart函数

  vector<int> v1( 5  , 10 ) ;

  v1.size()      // 返回v1 的大小 ;

  v1.push_back( 6 ) ;  // 在v1后继续添加一个元素6 ;

  v1.pop_pack() ;         // 将v1 的最后一个元素删除掉 ;

insert  可以在vector对象的任意位置插入一个元素

  v1.insert(v1.begin() , 10) ;      // 在第一个元素的前面插入一个元素10 ;

  v1.insert(v1.begin()+1 , 10) ;    // 在第二个元素的前面插入一个元素10 ;

  v1.insert(v1.begin() , 5 , 10) ;    // 在第一个元素前面插入5个元素10 ;

  v1.insert(v1.end() , 5) ;   // 在最后插入一个元素 5 , 相当于v1.push_back(5) ;

  v1.insert(v1.end() , 5 , 10) ;     // 在最后插入5个元素10 ;

六、vector中的 resize 函数

  resize函数主要用来重新定义容器的大小,如果比当前的大,可以自定义赋初值,也可以使用默认初值0 ;如果比当前的小,只取定义的部分;

  vector<int> v1(10 , 10) ;

  v1.resize(5) ;          // 原来的十个元素,现在只剩下五个 ;

  v1.resize(12,20) ;  // 原来的十个元素现在变成了十二个,新增加的部分用20来赋值 ;

七、vector中的 at 函数

  at 函数用来在容器相应的位置存储对象;

  vector<int> v1(5 , 10) ;

  v1.at[2] = 2 ;    // 将第三个元素改为2,相当于v1[2] = 2 ;

八、vector中的 erase 函数

erase 函数用来删除容器中的数据元素 ;

  vector<int> v1( 5 , 10) ;

  v1.erase(v1.begin()) ;    // 删除第一个元素 ;

  v1.erase(v1.begin() , v1.begin() + 3) ;    // 删除前三个元素 ;

对于vector这些好用的性质要比数组操作起来方便多了,以后要多多使用!

  

Vector(容器)的更多相关文章

  1. 把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 ...

  2. C++ STL vector容器学习

    STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...

  3. vector容器使用和assert断言关键字

    C++里面的容器是个比较复杂的东西,我这篇只说vector容器怎么使用,详细的网搜. vector模板类其实是一个动态数组,跟自己用new关键字创建数组一样,只不过vector会自动帮我们用new和d ...

  4. C++杂谈(二)初识vector容器与迭代器

    教科书中失踪的vector 很奇怪的一件事情,在当时学习C++的时候,老师并没有讲授容器的内容,当时参考的谭浩强老师的红皮C++也没有这个内容,不知为何.后来再学C++,发现容器是一个很重要的概念,在 ...

  5. vector容器的用法

    转自一篇博客^-^: 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.p ...

  6. C++ Daily《2》----vector容器的resize 与 reserve的区别

    C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么? 1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size. 2 ...

  7. 跟我一起学STL(2)——vector容器详解

    一.引言 在上一个专题中,我们介绍了STL中的六大组件,其中容器组件是大多数人经常使用的,因为STL容器是把运用最广的数据结构实现出来,所以我们写应用程序时运用的比较多.然而容器又可以序列式容器和关联 ...

  8. vector容器+iterator迭代器

    关于vector容器的详细描述,可参考:http://www.jb51.net/article/41648.htm   关于iterator迭代器的描述,可参考http://www.cppblog.c ...

  9. 提高Vector容器的删除效率

    vector容器是类似与一个线性数组,索引效率高,插入,删除的效率很低,需要遍历数据列表,一般情况下vector的删除操作由一下函数完成: iterator erase(iterator positi ...

  10. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

随机推荐

  1. iOS6和iOS7代码的适配(1)

    苹果的iOS7推出后,对于所有的应用来说都提出了一个天然的需求--适配不同版本的SDK.目前来说,用iOS6的SDK生成的应用,可以在iOS7的系统上跑,UI上也保持了原来的风格样式,这是苹果做的向下 ...

  2. lodash中_.set的用法

    _.set(object, path, value) # Ⓢ Ⓣ Ⓝ 设置对象的路径上的属性值.如果路径不存在,则创建它. 参数 1.object (Object): 待扩大的对象. 2.path ( ...

  3. Ubuntu创建快捷方式

    正常安装putty不成功:sudo apt-get install putty 总是报网络方面的错,我只好从官网下载源码自己编译.还是很容易的,找到unix目录,然后执行:make -f Makefi ...

  4. 从零开始学习UNITY3D(GUI篇)

    邻近年底,心也有些散乱,加上工作忙了一阵,在达内培训的课程也落下了不少.对unity3d的热度似乎也有点点下降.痛定思痛,又在淘宝上买了写蛮牛网的视频.总之不管是用任何手段都要逼着自己不要浪费了培训的 ...

  5. SQL 2008升级SQL 2008 R2完全教程或者10.00.4000升级10.50.1600

    今天将由于需要就将我的SQL 2008升级到SQL 2008 R2. 说到为什么要升级是因为,从另一台机器上备份了一个数据库,到我的机器上还原的时候提示“System.Data.SqlClient.S ...

  6. JS 代码调试经验总结(菜鸟必读)

    前言:不知不觉写了很多,希望你能耐心看完这篇文章 任何一个编程者都少不了要去调试代码,不管你是高手还是菜鸟,调试程序都是一项必不可少的工作.一般来说调试程序是在编写代码之后或测试期修改Bug 时进行的 ...

  7. C# Attribute(特性)之---数据契约 [DataContract]

    服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型. 一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送,如下所 ...

  8. Java基础之参数传递

    public class ArgsTransfer { /* * 基本数据类型直接存储在变量中,函数参数传递时,是将变量中存储的数据拷贝,函数中改变形参,和调用处的实参是不同的变量,两边互不影响 * ...

  9. gmpy2安装使用方法

    GMP(GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库),它是一个开源的高精度运算库,其中不但有普通的整数.实数.浮点数的高精度运算,还有 ...

  10. MySQL zerofill 的用法

    creata table t(x int(6) zerofill,y int); insert into t(x,y) values(1,1); select x,y from t;