数据结构详解之向量vector
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相关推荐
- 万字长文的Redis五种数据结构详解(理论+实战),建议收藏。
本文脑图 前言 Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库.缓存.消息中间件,这么优秀的东西一定要一点一点的吃透它. 关于Redis的文章之前也写过三篇,阅读量和读者的反映都还 ...
- redis数据结构详解之Hash(四)
原文:redis数据结构详解之Hash(四) 序言 Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个 ...
- Python中的高级数据结构详解
这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...
- [转]Redis内部数据结构详解-sds
本文是<Redis内部数据结构详解>系列的第二篇,讲述Redis中使用最多的一个基础数据结构:sds. 不管在哪门编程语言当中,字符串都几乎是使用最多的数据结构.sds正是在Redis中被 ...
- Redis数据结构详解之Zset(五)
原文:Redis数据结构详解之Zset(五) 序言 Zset跟Set之间可以有并集运算,因为他们存储的数据字符串集合,不能有一样的成员出现在一个zset中,但是为什么有了set还要有zset呢?zse ...
- 【肝帝一周总结:全网最全最细】☀️Mysql 索引数据结构详解与索引优化☀️《❤️记得收藏❤️》
[肝帝一周总结:全网最全最细]☀️Mysql 索引数据结构详解与索引优化☀️<❤️记得收藏❤️> 目录
- [redis] 10 种数据结构详解
[redis] 10 种数据结构详解 简介 5种常见数据结构 string: 最常见的 string key value list: 双向链表 set: 集合- zset: 有序集合 hash: 类似 ...
- 数据结构详解——最大(小)左倾树
数据结构详解--最大(小)左倾树 文章目录 数据结构详解--最大(小)左倾树 最大(小)左倾树的定义及用途 操作最大HBLT 合并操作 插入操作和删除操作 初始化操作 Java语言实现的最大HBLT ...
- 探索Redis设计与实现6:Redis内部数据结构详解——skiplist
Redis内部数据结构详解(6)--skiplist 2016-10-05 本文是<Redis内部数据结构详解>系列的第六篇.在本文中,我们围绕一个Redis的内部数据结构--skipl ...
- Redis底层数据结构详解
Redis底层数据结构详解 我们知道Redis常用的数据结构有五种,String.List.Hash.Set.ZSet,其他的集中数据结构基本上也是用这五种实现的,那么,这五种是Redis提供给你的数 ...
最新文章
- 九度 1545:奇怪的连通图
- mysql查询的时候会涉及到锁_Mysql 查询 锁的问题?
- jsp中为什么在跳转500页面的时候 图片加载不出来
- 集合计数 (容斥原理)
- Zabbix监控内存
- Scala For Java的一些参考
- 第一次java实验报告
- C++内嵌汇编 教程1
- ic启动器我的世界_hmcl启动器下载-我的世界HMCL启动器下载 v3.3.172官方最新版--pc6下载站...
- UOJ#449 喂鸽子
- 在ubuntu18.04上安装以及运行Faster-lio
- 2021年软考考试科目怎么安排?
- Ubuntu上遇到Failed to construct device ‘usb-ehci‘ instance #0
- 超级详细的计数问题的解法
- Redis网站热搜关键词加载实践,建议收藏
- 基于Raft共识协议的KV数据库
- Windows程序员初学Linux内核(附Linux内核各版本历史纪年表)
- 【ICPC 2019 徐州Regional】
- Exception in thread main java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty()L
- 每月播报:2008年10月 动态语言
热门文章
- python爬取图片失败什么原因_请问下面这个python3.5下的爬虫程序有什么错误,为什么运行正常 但是不爬取图片?...
- 技术文档模板_腾讯文档-轻松操作指南
- 新建模块 pom.xml依赖无法识别_使用模块依赖关系,第2部分
- ThinkPhp 使用 PHP_XLSXWriter 代替 PHPExcel 百万级数据单次导出
- php中$i++和++$i的区别
- 有人培训设计模式,吾表示难以理解,因为根本没用
- 帮助干活,朋友馈赠了购物卡
- 更换介质:请把标有“Debian GNU/Linux 10.2.0 _Buster_ - Officia的盘片插入驱动器“/media/cdrom/”再按「回车」键
- LINUX SHELL自定义函数及参数范例
- 泰山游记:道阻且长,活着走出