1. vector简介

vector 实现了一个动态数组,是可实现自动增长的对象数组;
vector是一种顺序容器,支持随机访问;
vector和数组不同之处在于:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。

2. vector用法

头文件:

#include<vector>//vector的头文件

声明方法:

//定义一维数组
vector<int> vec;//创建一个空的vector
vector<int> vec1(vec);//创建一个vector vec1,并用vec去初始化vec1
vector<int> vec2(n);//创建一个含有n个数据的vector
vector<int> vec3(10,0);//创建含有10个数据的vector,并全初始化为0
//定义m*n的二维数组
vector<vector<int> > array(m); //这个m一定不能少,m行
for(int i=0;i<m;i++) //n列
{array[i].resize(n);
}
for(i = 0; i < array.size(); i++)//遍历赋值
{for (j = 0; j < array[0].size();j++) {   array[i][j] = (i+1)*(j+1); }
}

定义特殊存储类型的vector

#include<stdio.h>
#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
typedef struct rect
{int id;int length;int width;//对于向量元素是结构体的,可在结构体内部定义比较函数//下面按id,length,width升序排序。bool operator< (const rect &a)  const{if(id!=a.id)return id<a.id;else{if(length!=a.length)return length<a.length;elsereturn width<a.width;}}
}Rect;int main()
{vector<Rect> vec;Rect rect;rect.id=1;rect.length=2;rect.width=3;vec.push_back(rect);vector<Rect>::iterator it=vec.begin();cout<<(*it).id<<' '<<(*it).length<<' '<<(*it).width<<endl;    return 0;
}

相关函数:

vec.push_back(a);//尾部插入数字
vec.pop_back(); //尾部删除数字
cout<<vec[0]<<endl;//使用下标访问
vec.size();//获得向量当前元素个数
vec.max_size();//获得向量最大容纳量
vec.clear();//清空向量
vec.empty();//判断向量是否为空(如果为空,返回1;否则返回0)
//使用迭代器访问元素
//begin(),end(),指向头元素、尾元素的指针
vector<int>::iterator it;//定义迭代器
for(it=vec.begin();it!=vec.end();it++)cout<<*it<<endl;
vec.insert(vec.begin()+i,a);//在第i+1个元素前面插入a;
vec.erase(vec.begin()+2);//删除第3个元素
//获取二维数组的长度
int size_row = vec.size(); //获取行数
int size_col = vec[0].size(); //获取列数

相关算法:

#include<algorithm>//算法头文件
reverse(vec.begin(),vec.end());//逆序翻转元素
sort(vec.begin(),vec.end());//默认是按升序排列,即从小到大
//自定义排序比较函数:按照降序比较
bool Comp(const int &a,const int &b)
{return a>b;
}
sort(vec.begin(),vec.end(),Comp);//实现降序排序

数据结构详解之向量vector相关推荐

  1. 万字长文的Redis五种数据结构详解(理论+实战),建议收藏。

    本文脑图 前言 Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库.缓存.消息中间件,这么优秀的东西一定要一点一点的吃透它. 关于Redis的文章之前也写过三篇,阅读量和读者的反映都还 ...

  2. redis数据结构详解之Hash(四)

    原文:redis数据结构详解之Hash(四) 序言 Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个 ...

  3. Python中的高级数据结构详解

    这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

  4. [转]Redis内部数据结构详解-sds

    本文是<Redis内部数据结构详解>系列的第二篇,讲述Redis中使用最多的一个基础数据结构:sds. 不管在哪门编程语言当中,字符串都几乎是使用最多的数据结构.sds正是在Redis中被 ...

  5. Redis数据结构详解之Zset(五)

    原文:Redis数据结构详解之Zset(五) 序言 Zset跟Set之间可以有并集运算,因为他们存储的数据字符串集合,不能有一样的成员出现在一个zset中,但是为什么有了set还要有zset呢?zse ...

  6. 【肝帝一周总结:全网最全最细】☀️Mysql 索引数据结构详解与索引优化☀️《❤️记得收藏❤️》

    [肝帝一周总结:全网最全最细]☀️Mysql 索引数据结构详解与索引优化☀️<❤️记得收藏❤️> 目录

  7. [redis] 10 种数据结构详解

    [redis] 10 种数据结构详解 简介 5种常见数据结构 string: 最常见的 string key value list: 双向链表 set: 集合- zset: 有序集合 hash: 类似 ...

  8. 数据结构详解——最大(小)左倾树

    数据结构详解--最大(小)左倾树 文章目录 数据结构详解--最大(小)左倾树 最大(小)左倾树的定义及用途 操作最大HBLT 合并操作 插入操作和删除操作 初始化操作 Java语言实现的最大HBLT ...

  9. 探索Redis设计与实现6:Redis内部数据结构详解——skiplist

    Redis内部数据结构详解(6)--skiplist  2016-10-05 本文是<Redis内部数据结构详解>系列的第六篇.在本文中,我们围绕一个Redis的内部数据结构--skipl ...

  10. Redis底层数据结构详解

    Redis底层数据结构详解 我们知道Redis常用的数据结构有五种,String.List.Hash.Set.ZSet,其他的集中数据结构基本上也是用这五种实现的,那么,这五种是Redis提供给你的数 ...

最新文章

  1. 九度 1545:奇怪的连通图
  2. mysql查询的时候会涉及到锁_Mysql 查询 锁的问题?
  3. jsp中为什么在跳转500页面的时候 图片加载不出来
  4. 集合计数 (容斥原理)
  5. Zabbix监控内存
  6. Scala For Java的一些参考
  7. 第一次java实验报告
  8. C++内嵌汇编 教程1
  9. ic启动器我的世界_hmcl启动器下载-我的世界HMCL启动器下载 v3.3.172官方最新版--pc6下载站...
  10. UOJ#449 喂鸽子
  11. 在ubuntu18.04上安装以及运行Faster-lio
  12. 2021年软考考试科目怎么安排?
  13. Ubuntu上遇到Failed to construct device ‘usb-ehci‘ instance #0
  14. 超级详细的计数问题的解法
  15. Redis网站热搜关键词加载实践,建议收藏
  16. 基于Raft共识协议的KV数据库
  17. Windows程序员初学Linux内核(附Linux内核各版本历史纪年表)
  18. 【ICPC 2019 徐州Regional】
  19. Exception in thread main java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()L
  20. 每月播报:2008年10月 动态语言

热门文章

  1. python爬取图片失败什么原因_请问下面这个python3.5下的爬虫程序有什么错误,为什么运行正常 但是不爬取图片?...
  2. 技术文档模板_腾讯文档-轻松操作指南
  3. 新建模块 pom.xml依赖无法识别_使用模块依赖关系,第2部分
  4. ThinkPhp 使用 PHP_XLSXWriter 代替 PHPExcel 百万级数据单次导出
  5. php中$i++和++$i的区别
  6. 有人培训设计模式,吾表示难以理解,因为根本没用
  7. 帮助干活,朋友馈赠了购物卡
  8. 更换介质:请把标有“Debian GNU/Linux 10.2.0 _Buster_ - Officia的盘片插入驱动器“/media/cdrom/”再按「回车」键
  9. LINUX SHELL自定义函数及参数范例
  10. 泰山游记:道阻且长,活着走出