浅谈 Vector
浅谈Vector
@
这里我主要说的是C++的vector,vector是一种顺序容器,顺序容器区别去有序容器,也就是的存储位置与大小无关,只与数据加入文件是的顺序有关。顺序容易还包括deque、list、forword_list、array、string。
注意: 随着C++泛型编程的逐渐强大,在实际操作中尽量减少使用数组,因为容器的出现,可以使我们在实际开发项目中将数组的使用降至最低。
1、容器基本操作
| 类型别名 | 含义 |
|---|---|
| iterator | 顾名思义,迭代器 |
| const_iterator | 只读迭代器 |
| size_type | 无符号整型,最大值为容器的大小 |
| difference_type | 带符号整形,两个迭代器之间的距离 |
| value_type | 元素类型 |
| const_reference | 元素const左值类型 |
2、vector 初始化
#include <vector>
using namespce std;
int main()
{
vector<int> vec ; //默认构造函数
vector<int> vec2(vec) ; //拷贝构造函数
vector<int> vec3(b,e); //利用迭代器进行初始化
vector<int> vec4{1,2,3,4}; //常用的初始化操作
vector<int> vec5(10); //创建10个元素,值默认为0
vector<int> vec6(10,6); //创建10个元素,值初始化6
}
为了书写方便,后面的书写采用简便书写的方式,这里默认大家已经有了main函数;
3、vector的赋值与swap
vec = vec2; //将vec2的元素赋值给vec2
vec = {1,2,3,4,5}; //vec替换为列表元素
vec.swap(vec2); //交换两者的元素
swap(vec1,vec2); //等价
vec.assign(b,e); //vec里面的元素换为迭代器b e之间的内容
vec.assign(n,t);//vec里面的元素更改为n个t
vec.assign(i1); //vec的内容更改为列表i1;
4、vector的增删改除
1.增加元素
vec.insert(p,t);// 在迭代器p所指的位置之前插入元素t,返回新插入元素的迭代器 直接法
vec.insert(p,n,t); //与vec.insert(p,array)相同 抽象法
vec.insert(p,b,e); //在迭代器p位置插入迭代器b,e之间的元素,返回新插入第一个元素的迭代器 间接法
vec.insert(p,array); //在迭代器p位置插入元素值列表array,返回第一个元素的迭代器 直接法
vec.push_back(t);//在vec末端插入元素t,返回void
vec.push_front(t);//在vec开始端插入t,返回void
2.访问元素
vec.back(); //返回最后一个元素的引用
vec.front(); //返回第一个元素的引用
vec[n]; //下标访问 返回引用
vec.at[n]; //at访问 比较安全 如果越界 抛出out of range 的异常 返回引用
3.删除元素
vec.pop_back(); //删除vec的尾元素 返回void
vec.pop_front();//删除vec的首元素,返回void
vec.erase(p); //删除迭代器p所指的元素 返回删除元素的前一个元素的迭代器
vec.erase(b,e);//删除迭代器b,e之间的元素 ,返回最后一个被删除元素的之后的迭代器
vec.clear(); //删除vec的所有元素
4.元素的大小
vec.size();//返回元素的数目
vec.max_size();//返回可保存元素的最大大小
vec.empty();//vec是否为空
浅谈 Vector的更多相关文章
- 浅谈Vector
浅谈Vector 在之前的文章中,我们已经说过线程不安全的ArrayList和LinkedList,今天我们来讲讲一个线程安全的列表容器,他就是Vector,他的底层和ArrayList一样使用数组来 ...
- 浅谈Vector、ArrayList、LinkedList
下图是Collection的类继承图 从图中可以看出:Vector.ArrayList.LinkedList这三者都实现了List 接口.所有使用方式也很相似,主要区别在于实现方式的不同,所以对不同的 ...
- 由jtable浅谈vector<vector<Object>>的用法(转自a718515028的专栏)
以前只用过vector<Object> ,但是在做从数据库导出数据放到jtable中时,发现还有个vector<vector<Object>>的用法. 先说jta ...
- 浅谈C++ STL vector 容器
浅谈C++ STL vector 容器 本篇随笔简单介绍一下\(C++STL\)中\(vector\)容器的使用方法和常见的使用技巧.\(vector\)容器是\(C++STL\)的一种比较基本的容器 ...
- 浅谈JAVA集合框架
浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...
- C++ STL中的常用容器浅谈
STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
- 浅谈java类集框架和数据结构(2)
继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...
- 浅谈压缩感知(二十四):压缩感知重构算法之子空间追踪(SP)
主要内容: SP的算法流程 SP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 SP与CoSaMP的性能比较 一.SP的算法流程 压缩采样匹配追踪(CoSaMP)与子 ...
随机推荐
- Oracle EM的重新配置和界面语言修改
实际在国内的DBA日常工作中,几乎很少会用到EM进行日常管理.但在Oracle的考试中,为了快速完成某些场景的应答,还是推荐使用EM进行操作的. 1.重新配置EM 2.修改界面语言 1.重新配置EM ...
- 持续集成高级篇之Jekins参数化构建(二)
系列目录 上一节我们讲解了如何使用bat脚本或者powershell脚本自身的机制来达到参数化构建的目的,这在一定程序上增加了灵活性,然而缺点也相当明显:它只能适应一些相对比较固定的参数传入(比如像上 ...
- JVM体系结构详解
每个Java开发人员都知道字节码将由JRE (Java运行时环境)执行.但是很多人不知道JRE是Java Virtual Machine(JVM)的实现,它分析字节码.解释代码并执行代码.作为开发者, ...
- Elasticsearch(5)--- 基本命令(集群相关命令、索引CRUD命令、文档CRUD命令)
Elasticsearch(5)--- 基本命令 这篇博客的命令分为ES集群相关命令,索引CRUD命令,文档CRUD命令.这里不包括Query查询命令,它单独写一篇博客. 一.ES集群相关命令 ES集 ...
- BZOJ1878[SDOI2009]HH的项链+莫队算法模板
题意:多次询问,求在一个区间中,有多少种珠子: 思路:莫队算法模板题目: 参考:https://www.cnblogs.com/RabbitHu/p/MoDuiTutorial.html #inclu ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 hdu 6440 Dream 模拟
Dream Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- codeforces 805 E. Ice cream coloring(dfs)
题目链接:http://codeforces.com/contest/805/problem/E 题意:你有n个节点,这个n个节点构成一棵树.每个节点拥有有si个类型的ice,同一个节点的ice互相连 ...
- CF985B Switches and Lamps 思维 第十九
Switches and Lamps time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- Educational Codeforces Round 68 Editorial
题目链接:http://codeforces.com/contest/1194 A.Remove a Progre ...
- instanceof运算符与引用变量的强制类型转换
一.instanceof运算符 instanceof是Java语言中的一个二元运算符,它的作用是判断一个引用类型的变量所指向的对象是否是一个类(或接口.抽象类.父类)的实例,即它左边的对象是否是它右边 ...