【C++学习记录】—— 【9】【字符串、向量和数组】【标准库vector】

零.前言

标准库vector表示对象的集合,其中所有的对象类型都相同,集合中的每个对象都有一个与之对应的索引。vector也被常称作索引
如果使用vector,需要添加头文件#include <vector>using std::vector
C++有类模板,也有函数模板,而这个vector就是个类模板。它本身不是一个类或函数,而只是一份让编译器生成类的“说明书”,而编译器将模板创建类或函数的时候,叫做实例化。所以,当我们使用模板的时候,需要指出编译器将其实例化为什么类型。形如:

vector<int> a;
vector<student> b;
vector<vector<string>> file;

老版本的C++编译器需要把vector<vector<string>>后面多添加一个空格,写成vector<vector<string> >这种形式。
而对于vector的理解,我们可以把它和前面知道的数组和string来对比。而vector的目的是“运行时高效快速地添加元素”,所以我们并不需要为vector指定大小、容量。

一.定义和初始化vector对象

1.初始化

以下是vector的常用初始方法:

vector<T> v1;
vector<T> v2(v1);
vector<T> v2 = v1;
vector<T> v3(m, val);
vector<T> v4(n);
vector<T> v5{a, b, c, d, e};
vector<T> v6 = {a, b, c, d, e};

2.列表初始化vector对象

如果使用列表初始化vector只能使用{}

3.创建指定数量的元素

就形如:

vector<string> kannas(520, "kanna");

4.值初始化

如果我们没有为它提供初始值,那么vector会创建一个值初始化的元素初值,这个值由其类型决定:比如int就自动设置为0,sting就执行其默认初始化(空字符串)。

vector<int> numbers(10); 	//这里创建了一个由10个0组成的vector

但也有特殊情况,必须提供初始值:

  1. 类是必须要初始值才能够被初始化的。
  2. 不支持默认初始化的类

5.分清{}与()

vector<int> v1(10);		//有10个0元素
vector<int> v2{10};		//有1个10元素
vector<int> v3(10, 1);	//有10个1元素
vector<int> v4{10, 1};	//有两个元素,分别为10、1

当然,还有些特殊情况,编译器能够帮你判断,比如在vector<string>的初始化中,添加了int类型的值:

vector<string> kannas{10};			//有10个空字符串
vector<string> kannas{10, "kanna"};		//这个代码还是对vector生成了10个kanna

二.向vector对象中添加元素

一般来说,向vector的末尾添加元素的话,调用其方法.push_back即可。
这是一段生成 由0~99组成的vector

vector<int> v2;
for (int i = 0; i < 100; i++)
	v2.push_back(i);

三.其他vector操作

1.操作

string差不多,vector也支持empty()、size()、!=、==……
当然,size还是返回的vector<int>::size_type类型

2.不能用下标形式添加元素

也是就是[]里的数,还是不能>=.size(),这不等同于数组。下标运算符只能访问已存在的元素,不可添加元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康娜喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值