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


标准库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

但也有特殊情况,必须提供初始值:
  1. 类是必须要初始值才能够被初始化的。
  2. 不支持默认初始化的类
5.分清{}与()
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(),这不等同于数组。下标运算符只能访问已存在的元素,不可添加元素

    推荐阅读