序列式容器————vector
目录
介绍
1 创建
2 容量和大小
size()
capacity()
3 resize()
4 reverse()
5 获取元素
front()
back()
6 迭代器(待补充)
7 push_back()
8 emplace_back()
9 emplace()(待补充)
10 insert()
11 clear()
12 remove()
13 pop_back()
14 shrink_to_fit()
15 erase()
介绍
和 array<T,N> 容器相似,不同的是 vector<T> 容器的大小可以自动增长。在大多数时候,都可以用 vector<T> 代替数组存放元素。只要能够意识到,vector<T> 在扩展容量,以 及在序列内部删除或添加元素时会产生一些开销;但大多数情况下,代码不会明显变慢。
为了使用 vector<T> 容器模板,需要在代码中包含头文件 vector。
1 创建
vector<int> a ; //声明一个int型向量a vector<int> a(10) ; //声明一个初始大小为10的向量 vector<int> a(10, 1) ; //声明一个初始大小为10且初始值都为1的向量 vector<int> b(a) ; //声明并用向量a初始化向量b vector<int> b(a.begin(), a.begin()+3) ; //将a向量中从第0个到第2个(共3个)作为向量b的初始值
数组的初始化:
int n[] = {1, 2, 3, 4, 5} ; vector<int> a(n, n+5) ; //将数组n的前5个元素作为向量a的初值 vector<int> a(&n[1], &n[4]) ; //将n[1] - n[4]范围内的元素作为向量a的初值
2 容量和大小
vector 的容量大小,是指在不分配更多内存的情况下可以保存的最多元素个数,vector 的大小是它实际所包含的元素个数,也就是有值的元素的个数。
vector 的大小不能超出它的容董。当大小等于容量时,增加一个元素就会导致更多内存的分配。
(1)size()
返回大小,无符号整型值
(2)capacity()
返回容量,无符号整型值
3 resize()
改变容器大小。
std::vector<int> values {1,2,3}; values.resize (5); //把元素的个数变为参数指定的值,所以会增加两个用默认值初始化的元素。 //如果添加了一个元素,导致超过当前容器的容景,容量会自动增加。 values.resize (7, 99); //将容器大小设为7,并用99来初始化新增的元素 //若7<原来的容器大小,那么就删除多余的元素
4 reverse()
改变容器容量(元素个数,整型)。
5 获取元素
使用下标索引[]
(1)front
返回第一个元素的引用
(2)back
返回最后一个元素的引用
因为成员函数 front() 和 back() 返回的是引用,所以它们可以出现在赋值运算符的左边。
values.front() = 2.71828;
6 迭代器
1 //全部输出 2 vector<int>::iterator t ; 3 for(t=a.begin(); t!=a.end(); t++)//t就是迭代器,表示元素位置,还可以前后移动 4 cout<<*t<<" " ;//*t为指针的间接访问形式,是访问t指向的元素值
7 push_back()
8 emplace_back()
emplace_back() 的参数正是添加到容器中的对象的构造函数所需要的参数。
emplace_back() 用它的参数作为构造函数的参数,在容器中生成对象。如果不想使用移动运算,使用 push_back()。
可以在 emplace_back() 函数中使用尽可能多的参数,只要它们满足对象构造函数的要求。这里有一个使用多参数的 emplace_back() 的示例:
std::string str {"alleged"}; words.emplace_back(str, 2, 3); //生成一个string对象(alleged的索引2开始的三个元素组成):leg,然后将leg添加到words字符串后面
9 emplace()
通过使用成员函数 emplace(),可以在 vector 序列中插入新的元素。对象会在容器中直接生成,而不是先单独生成对象,然后再把它作为参数传入。
10 insert()
11 clear()
std::vector<int> data(100, 99);// Contains 100 elements initialized to 99 data.clear(); // Remove all elements
移除了所有的元素,因此大小变为 0,因为这个操作并没有改变容器的容量,所以容量还是 100。
12 remove()
remove() 算法由定义在 algorithm 头文件中的模板生成,它可以删除匹配特定值的一段元素。
13 pop_back()
14 shrink_to_fit()
去掉容器中多余的容量,例如不再向容器中添加新元素。
data.shrink_to_fit();
15 erase()
删除容器中的一个或多个元素。如果只删除单个元素,那么只需要提供一个参数
auto iter = data.erase(std::begin(data)+1); //Delete the second element
原文地址:https://www.cnblogs.com/pacino12134/p/11441882.html
- 百度某SDK设计缺陷导致手机敏感信息泄露(IMEI号和地理位置信息等)
- HDU 1004 Let the Balloon Rise【STL<map>】
- UVA 10881 - Piotr's Ants【模拟+思维】
- DFS中的奇偶剪枝学习笔记
- POJ 3154 Graveyard【多解,数论,贪心】
- HDU 1010 Tempter of the Bone【DFS经典题+奇偶剪枝详解】
- Ethereum - 以太坊项目
- COGS 144. [USACO Dec07] 魅力手镯【01背包复习】
- SQL Server 使用全文索引进行页面搜索
- HDU 1003 Max Sum【动态规划求最大子序列和详解 】
- HDU 1005 Number Sequence【多解,暴力打表,鸽巢原理】
- HDU 1019 Least Common Multiple【gcd+lcm+水+多个数的lcm】
- HDU 1017 A Mathematical Curiosity【水,坑】
- 比特币项目
- 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 数组属性和方法
- Druid 数据库连接池监控配置(web项目)
- Druid 介绍及配置
- Kafka 分布式的,基于发布/订阅的消息系统
- Maven 打包涉及证书文件问题
- maven 安装alipay-sdk包到本地及远程仓库
- maven 基础 maven-shade-pluginMaven Scopepom.xml 样例
- zookeeper应用:屏障、队列、分布式锁
- Java AIO 异步IO应用实例
- Java NIO 同步非阻塞应用实例
- Spring Boot 示例项目
- Jetty 发布web服务
- Netty 异步的、事件驱动的网络应用程序框架和工具
- Consul 服务发现和配置
- Consul 启动命令,Web UI
- Thrift 跨服务开发框架