浅谈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的更多相关文章

  1. 浅谈Vector

    浅谈Vector 在之前的文章中,我们已经说过线程不安全的ArrayList和LinkedList,今天我们来讲讲一个线程安全的列表容器,他就是Vector,他的底层和ArrayList一样使用数组来 ...

  2. 浅谈Vector、ArrayList、LinkedList

    下图是Collection的类继承图 从图中可以看出:Vector.ArrayList.LinkedList这三者都实现了List 接口.所有使用方式也很相似,主要区别在于实现方式的不同,所以对不同的 ...

  3. 由jtable浅谈vector<vector<Object>>的用法(转自a718515028的专栏)

    以前只用过vector<Object>  ,但是在做从数据库导出数据放到jtable中时,发现还有个vector<vector<Object>>的用法. 先说jta ...

  4. 浅谈C++ STL vector 容器

    浅谈C++ STL vector 容器 本篇随笔简单介绍一下\(C++STL\)中\(vector\)容器的使用方法和常见的使用技巧.\(vector\)容器是\(C++STL\)的一种比较基本的容器 ...

  5. 浅谈JAVA集合框架

    浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...

  6. C++ STL中的常用容器浅谈

    STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中 ...

  7. 浅谈Java的集合框架

    浅谈Java的集合框架 一.    初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...

  8. 浅谈java类集框架和数据结构(2)

    继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...

  9. 浅谈压缩感知(二十四):压缩感知重构算法之子空间追踪(SP)

    主要内容: SP的算法流程 SP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 SP与CoSaMP的性能比较 一.SP的算法流程 压缩采样匹配追踪(CoSaMP)与子 ...

随机推荐

  1. RSA加密的java实现2(交互IOS)

    这里的base64的依赖不一样,一个是apache,一个是sun的  ,由于base64的依赖不同,导致在IOS中解析不了! package com.handsight.platform.cipher ...

  2. SynchronousQueue队列程序的执行结果分析

    public static void main(String[] args) throws Exception { /** * SynchronousQueue队列程序的执行结果分析 * Blocki ...

  3. Java连载21-switch练习

    一.switch练习 public class d21_{ public static void main(String[] args) { java.util.Scanner s = new jav ...

  4. SpringBoot 动态配置邮箱发件人

    SpringBoot 动态配置邮箱发件人 现在的消息模块少不了邮件发送.短信发送和手机推送的功能.邮件发送的功能历史最为悠久,也算的上烂大街的功能.一般在配置文件中设置好邮箱地址.账号.密码和发件服务 ...

  5. MySQL之备份和还原

    在实际项目中对于数据库的安全是重中之重,为防万一我们需要做好备份工作.备份分为全量备份和增量备份,今天我们就来实践下备份和还原操作. 一.为什么需要备份 在生产环境中数据库可能会遭遇到各种各样的不测从 ...

  6. Android进阶之路(1)-详解MVC

    最近因为换工作的原因没有写博客,现在慢慢稳定了,我准备写一些关于Android 进阶的文章,也是为了督促自己学习,大家一起进步! 今天详细的分析一下Android APP架构之一:MVC ### MV ...

  7. Delphi - cxGrid颜色显示相关设置

    1:单元格的值满足某个条件时,该单元格所在整行颜色设置整行字体设置 选中cxGridDBTableView,单击F11调出属性配置面板,在Events中双击OnCustomDrawCell后双击编辑重 ...

  8. SpringBoot第二十四篇:应用监控之Admin

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11457867.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   前一章(S ...

  9. 转载-Springboot整合ehcache缓存

    转载:https://www.cnblogs.com/xzmiyx/p/9897623.html EhCache是一个比较成熟的Java缓存框架,最早从hibernate发展而来, 是进程中的缓存系统 ...

  10. 第6章 面向对象的程序设计 6.1 javascript对象

    ECMA-262 把对象定义为: “无序属性的集合, 其属性可以包含基本值. 对象或者函数. ” 严格来讲,这就相当于说对象是一组没有特定顺序的值.对象的每个属性或方法都有一个名字,而每个名字都映射到 ...