Vector(容器)
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(容器)的更多相关文章
- 把《c++ primer》读薄(3-2 标准库vector容器+迭代器初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 标准库vector类型初探,同一种类型的对象的集合(类似数组),是一个类模版而不是数据类型,学名容器,负责管理 和 存储的元素 ...
- C++ STL vector容器学习
STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...
- vector容器使用和assert断言关键字
C++里面的容器是个比较复杂的东西,我这篇只说vector容器怎么使用,详细的网搜. vector模板类其实是一个动态数组,跟自己用new关键字创建数组一样,只不过vector会自动帮我们用new和d ...
- C++杂谈(二)初识vector容器与迭代器
教科书中失踪的vector 很奇怪的一件事情,在当时学习C++的时候,老师并没有讲授容器的内容,当时参考的谭浩强老师的红皮C++也没有这个内容,不知为何.后来再学C++,发现容器是一个很重要的概念,在 ...
- vector容器的用法
转自一篇博客^-^: 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.p ...
- C++ Daily《2》----vector容器的resize 与 reserve的区别
C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么? 1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size. 2 ...
- 跟我一起学STL(2)——vector容器详解
一.引言 在上一个专题中,我们介绍了STL中的六大组件,其中容器组件是大多数人经常使用的,因为STL容器是把运用最广的数据结构实现出来,所以我们写应用程序时运用的比较多.然而容器又可以序列式容器和关联 ...
- vector容器+iterator迭代器
关于vector容器的详细描述,可参考:http://www.jb51.net/article/41648.htm 关于iterator迭代器的描述,可参考http://www.cppblog.c ...
- 提高Vector容器的删除效率
vector容器是类似与一个线性数组,索引效率高,插入,删除的效率很低,需要遍历数据列表,一般情况下vector的删除操作由一下函数完成: iterator erase(iterator positi ...
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
随机推荐
- Ubuntu下屏幕录像、后期处理不完全攻略
提要 如果要做成果展示或者效果演示,通常需要录取屏幕生成视频文件,在windows中我们可以用屏幕录像专家在录像, vegas 来做后期处理,Ubuntu可以么? 答案时当然可以!虽然第一次用觉得有点 ...
- linux性能监控三张图
一.监控 二.测试 三.优化
- Unity 3d 刚体
1.起始的设置如下图: 这是我们运行游戏,方块并不会往下掉. 2.选中CUBE,然后添加刚体 此时再运行,会发现场景的方块会自动掉在地上. 3.我们来看一下刚体的属性 ...
- EasyUI中datagrid实现显示、增加、 删除、 修改、 查询操作(后台代码C#)
菜鸟进入,高手请绕道! +++++++++++++++++++++++++++++++++++++++ 一.数据的显示 1新建HtmlPage2.html页面,引入相关文件.如下所示 <scri ...
- asp.net Listbox控件用法
2008-02-18 19:56 来源: 作者: ListBox(列表框)控件可以显示一组项目的列表,用户可以根据需要从中选择一个或多个选项.列表框可以为用户提供所有选项的列表.虽然也可设置列表框为多 ...
- 编写可维护的JS 05
5.UI层的松耦合 松耦合定义 每个组件尽量独立,修改一个不影响其他的组件 将Js从css中抽离 不要使用css表达式,因为浏览器会以高频率重复计算css表达式,严重影响性能,IE9不支持表达式 将C ...
- 关于bootstrap弹出二级对话框的使用
弹出二级对话框,即在对话框的基础上再弹出一个对话框.这对于CRM管理类系统来说应用场景很常见.看到网上有关于实现二级弹出框的方法,需要在一级对话框页面上添加不少css样式.其实,完全可以不用这么麻烦. ...
- 记hive select distinct 多列 误区一则
当select distinct a,b,c时,只会对a.b.c都起作用,无法达到只顾虑多余的a列: 根据hive官方网站说明:当有表 a b 10 1 10 2 10 3 此时select a,b ...
- Redis Sentinel的Redis集群(主从&Sharding)高可用方案
在不使用redis3.0之后版本的情况下,对于redis服务端一般是采用Sentinel哨兵模式,也就是一主多备的方式. 这里,先抛出三个问题, 问题1:单节点宕机数据丢失?问题2:多节点(节点间没有 ...
- Streams Studio配置Build options
Defining build options You can change the build options of the internal builder for building an SPL ...