STL-vector
时间:2020-07-11
本文章向大家介绍STL-vector,主要包括STL-vector使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Vector是一个动态数组,其元素可以是任意型别,但必须满足assign和copy两个性质。
一、Vector的构造函数:
vector<int>v;//创建一个空vector vector<int>v1(5);//创建一个大小为5的初始化为值为0的vector{0,0,0,0,0} vector<int>v2(5,9);//创建一个大小为5,值都为9的vector{9,9,9,9,9} vector<int>v3(v2);//利用拷贝构造了一个v2副本的vector{9,9,9,9,9} vector<int>v4(v3.begin(),v3.end());//以区间创建了一个vector{9,9,9,9,9} int a[] = { 1,3,5,2,4,6 }; vector<int>v5(a,a+6);//以数组创建了一个vector{1,3,5,2,4,6} //以输入流迭代器创建了一个vector,其中第一个参数必须加(),否则创建的不是vector而是一个函数声明 vector<int>v6((istream_iterator<int>(cin)),istream_iterator<int>());
二、Vector的非变动性操作:
v.size();//返回v中的当前元素个数 v.capacity();//返回v创建时能容纳最大元素的个数 v.empty();//判断v是否为空,空返回true;其效率高于v.size(0); v.max_size();//返回v最大容纳元素的个数 v.reserve(20);//如果容量不足,扩容时容量大小为形参设定值,且形参值大于当前容量值 v == v1;//判断v是否等于v1 v != v1;//判断v是否不等于v1 v > v1;//判断v是否大于v1 v < v1;//判断v是否小于v1 v <= v1;//判断v是否小于等于v1 v >= v1;//判断v是否大于等于v1
三、Vector的赋值操作
v.assign(8, 10);//将n个值为elem的元素赋值给v v.assign(v1.begin(), v1.end());//将v1区间的元素赋值为v v = v1;//将v1赋值为v v.swap(v1);//交换v与v1的元素 swap(v, v1);//同上,此为全局函数
四、Vector元素的存取
v[i];//返回索引i所标示的元素,不进行范围检测 v.at(i);//返回索引i所标示的元素,i越界抛出out_of_range v.back();//返回最后一个元素,不检查最后一个元素是否存在 v.front();//返回第一个元素,不检查第一个元素是否存在
五、Vector迭代器相关函数
v.begin();//返回指向第一个元素的迭代器 v.end();//返回指向最后元素下一个位置的迭代器 v.rbegin();//返回指向最后一个元素的迭代器 v.rend();//返回指向第一个元素前一个位置的迭代器
v.cbegin();//返回指向第一个元素的常迭代器 v.cend();//返回指向最后元素下一个位置的常迭代器 v.crbegin();//返回指向最后一个元素的常迭代器 v.crend();//返回指向第一个元素前一个位置的常迭代器
六、Vector的插入操作
v.push_back(1);//在末尾插入元素 v.insert(v.begin(), 2);//在某位置前插入元素 v.insert(v.end(), 5, 20);//在某位置前插入n个值为elem的元素 v.insert(v.begin, v1.begin(), v1.end());//在某位置前插入一段区间元素
七、Vector的删除操作
v.pop_back();//末尾删除 v.erase(v.begin());//指定位置上的元素删除 v.erase(v.begin(), v.end());//指定区间中的元素删除 v.clear();//全部元素清除 v.resize(6);//将元素的数量改为形参数,如果其大于size则多出来的元素值由default构造完成,小于size截取后半段 v.resize(6, 10);//将元素的数量改为形参数,如果其大于size则多出来的元素值为elem,小于size截取后半段
八、Vector的减容操作
vector<int>v9(v1); v9.swap(v1);//将v1的容量缩减至size大小 v.shrink_to_fit();//将v1的容量缩减至size大小
九、Vector的算法
1、移除与某值相等得所有元素
v.erase(remove(v.begin(), v.end(), val));//移除元素值为val的所有元素
原文地址:https://www.cnblogs.com/dhhu007/p/13282792.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 面试官:兄弟,说说 ArrayList 和 LinkedList 有什么区别
- 开源中文关系抽取框架,来自浙大知识引擎实验室
- EAST+CRNN银行卡号识别,附数据集
- 绝了!搜狗输入法这骚操作!
- Linux 中几个正则表达式的用法
- 产品级垃圾文本分类器
- 突发!Windows XP 源码泄露!
- GitHub 神器:写代码、搜问题,全部都在「终端」完成!
- Redis系列:单机主从模式搭建
- Python 爬取链家成都二手房源信息 asyncio + aiohttp 异步爬虫实战
- 10 个冷门但又非常实用的 Docker 使用技巧!
- 利用 Shell 脚本实现邮件监控 Linux 系统的内存
- 拥有此神技,脚本调试从此与 echo、set、test 说分手!
- 很少用到,但掏出来让人感到牛逼的Web API
- 突击并发编程JUC系列-并发工具 CountDownLatch