c++ vector 头文件_《C++ Primer》学习之路第3章-3.3标准库类型vector

0eb8b62be40c19358675f50b75d25259.png

简介

标准库类型vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。 因为vector“容纳着”其他对象,所以它也常被称为容器。 想用vector,必须包含适当的头文件。

#include <vector>
using std::vector;

C++既有类模板也有函数模板,其中vector是一个类模板。只有对C++有了相当深入的理解才能写出模板。 模板本身不是类或函数,相反可以将模板看坐为编译器生成类或函数编写的一份说明。 也就是说,编译器会根据模板创建类或者函数,这个过程称为实例化

举例

vector<int> ivec;          //ivec保存int类型的对象
vector<vector<string>> file;     //该向量的元素是vector对象

注意

vector难容纳绝大多数类型的对象作为其元素,但是因为引用不是对象,所以不存在包含引用的vector。 也就是说,不能

vector<&xxx> ivec;         //wrong

定义和舒适化vector对象

22ef027d1cd473cf836cee6095222969.png

1. 默认初始化 最常见的方式就是先定义一个空vector,然后当运行时获取到元素的值后再逐一添加。

2. 列表初始化 注意:

vector<string> artivles = {"a", "an", "the"};   

这是赋值方式,等价于:

vector<string> articles;
articles ={"a","an","the"};    

推荐使用列表初始化,形式为:

vector<string> artivles{"a","an","the"};

3. 创建指定数量的元素 注意:

vector<int>ivec(10,-1);//10个int类型的元素,每个都被初始化为-1
vector<string> svec(10,"hi!"); 

4. 值初始化

vector ivec(10)'      //10个元素,每个都被初始化为0    ```

列表初始化还是值初始化?

总结:

1. 如果是圆括号,那么提供的值就是用来构造vector对象的。

2. 如果是花括号,那么可以表述为我们想列表初始化该vector对象。也就是说,初始化过程会尽量将花括号内的值当成是元素初始值的列表来处理,只有在无法执行列表初始化时才会考虑其他初始化方式。

2 向vector对象中添加元素

函数:push_back 举例:

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

解释: 先创建一个空的vector,然后经过循环放入。

注意

C和java都是在创建vector对象时若能顺便指定其容量是最好的,然而在C++中没有必要。

其他vector操作

4b0670ff583e09741f4c1dc3a1125f1d.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值