标准库vector
- 零.前言
- 一.定义和初始化vector对象
- 1.初始化
- 2.列表初始化vector对象
- 3.创建指定数量的元素
- 4.值初始化
- 5.分清{}与()
- 二.向vector对象中添加元素
- 三.其他vector操作
- 1.操作
- 2.不能用下标形式添加元素
零.前言 标准库
vector
表示对象的集合,其中所有的对象类型都相同,集合中的每个对象都有一个与之对应的索引。vector
也被常称作索引
。如果使用
vector
,需要添加头文件#include
和using std::vector
。C++有类模板,也有函数模板,而这个
vector
就是个类模板。它本身不是一个类或函数,而只是一份让编译器生成类的“说明书”,而编译器将模板创建类或函数的时候,叫做实例化
。所以,当我们使用模板的时候,需要指出编译器将其实例化为什么类型。形如:vector a;
vector> b;
vector> file;
老版本的C++编译器需要把
vector
后面多添加一个空格,写成vector
这种形式。而对于
vector
的理解,我们可以把它和前面知道的数组和string来对比。而vector
的目的是“运行时高效快速地添加元素”,所以我们并不需要为vector
指定大小、容量。一.定义和初始化vector对象 1.初始化 以下是
vector
的常用初始方法:vector v1;
vector v2(v1);
vector v2 = v1;
vector v3(m, val);
vector v4(n);
vector v5{a, b, c, d, e};
vector v6 = {a, b, c, d, e};
2.列表初始化vector对象 如果使用列表初始化
vector
只能使用{}
3.创建指定数量的元素 就形如:
vector> kannas(520, "kanna");
4.值初始化 如果我们没有为它提供初始值,那么
vector
会创建一个值初始化的
元素初值,这个值由其类型决定:比如int
就自动设置为0,sting
就执行其默认初始化(空字符串)。vector numbers(10);
//这里创建了一个由10个0组成的vector
但也有特殊情况,必须提供初始值:
- 类是必须要初始值才能够被初始化的。
- 不支持默认初始化的类
vector v1(10);
//有10个0元素
vector v2{10};
//有1个10元素
vector v3(10, 1);
//有10个1元素
vector v4{10, 1};
//有两个元素,分别为10、1
当然,还有些特殊情况,编译器能够帮你判断,比如在
vector
的初始化中,添加了int
类型的值:vector> kannas{10};
//有10个空字符串
vector> kannas{10, "kanna"};
//这个代码还是对vector生成了10个kanna
二.向vector对象中添加元素 【【C++学习记录】—— 【9】【字符串、向量和数组】【标准库vector】】一般来说,向
vector
的末尾添加元素的话,调用其方法.push_back
即可。这是一段生成 由0~99组成的
vector
vector v2;
for (int i = 0;
i < 100;
i++)
v2.push_back(i);
三.其他vector操作 1.操作 和
string
差不多,vector
也支持empty()、size()、!=、==
……当然,
size
还是返回的vector::size_type
类型2.不能用下标形式添加元素 也是就是
[]
里的数,还是不能>=.size()
,这不等同于数组。下标运算符只能访问已存在的元素,不可添加元素推荐阅读
- C++学习记录|【C++学习记录】—— 【8】【字符串、向量和数组】【标准库类型string】
- C++学习记录|【C++学习记录】—— 【7】【字符串、向量和数组】【命名空间的using声明】
- C++学习记录|【C++学习记录】—— 【5】【变量和基本类型】【处理类型】
- C++学习记录|【C++学习记录】—— 【6】【变量和基本类型】【自定义数据结构】