• 顺序容器——vector


    一、介绍

    标准库类型vector表示对象的集合,其中所有对象的类型相同。

    集合中的每个对象都有一个与之对应的索引,索引用于访问对象。

    vector是一个类模板,不是类型。由vector生成的类型必须包含vector中元素的类型,比如 vector<int>

    要想使用vector,必须包含适当的头文件。如下:

    # include <vector>
    using std::vector;
    

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

    二、定义和初始化vector对象

    操作 说明
    vector v1 v1是一个空vector,它潜在的元素是T类型的,执行默认初始化
    vector v2(v1) v2中包含有v1所以元素的副本
    vector v2 = v1 等价于v2(v1), v2中包含有v1所有元素的副本
    vector v3(n, val) v3包含了n个重复的元素,每个元素的值都是val
    vector v4(n) v4包含了n个重复地执行了值初始化的对象
    vector v5{a, b, c...} v5包含了初始值个数的元素,每个元素被赋予相应的初始值
    vector v5 = {a, b, c...} 等价于v5{a, b, c...}

    三、添加元素

    使用场景:先创建一个空vector,然后在运行时再利用成员函数push_back向其中添加元素。

    vector<int> v2;
    for (int i = 0; i != 100; ++i) {
        v2.push_back(i);		// 依次把整数值放到v2的尾部
    }
    

    注意:范围for语句内不应改变其所遍历序列的大小。

    四、其他操作

    操作 说明
    v.empty() 如果v不包含任何元素,返回真;否则返回假
    v.size() 返回v中元素的个数
    v.push_back(t) 向v的尾部添加一个值为t的元素
    v[n] 返回v中第n个位置上元素的引用
    v1 = v2 用v2中元素的拷贝替换v1中的元素
    v1 = {a, b, c...} 用列表中元素的拷贝替换v1中的元素
    v1 == v2 v1和v2相等当且仅当它们的元素数量相同且对应位置的元素值都相同
    v1 != v2 与 v1 == v2相反
    <<=>>= 以字典顺序进行比较

    遍历vector中元素

    vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9};
    for (auto &i : v) {		// 对于v中的每一个元素,注意i是一个引用
        i *= i;				// 求元素值的平方
    }
    for (auto i : v) {
        cout << i << " ";	// 输出该元素
    }
    cout << endl;
    

    不能用下标形式添加元素

    vector<int> ivec;		// 空vector对象
    for (decltype(ivec.size()) ix = 0; ix != 10; ++ix) {
        ivec[ix] = ix;		// 严重错误:ivec中不包含任何元素
    }
    

    注意:vector对象的下标运算符可用于访问已存在的元素,而不能用于添加元素。

    确保下标合法的一种有效手段就是尽可能使用范围for语句。

  • 相关阅读:
    大型网站的数据库分割问题。
    大型网站的数据库分割问题。
    分布式集群的Session问题
    大型网站架构设计摘要
    大型网站的架构概要
    公司产品的优势
    java.util.concurrent 学习笔记(2) 线程池基础
    《Java 7 并发编程指南》学习概要 (6) Fork/Join
    《Java 7 并发编程指南》学习概要 (5) 线程池
    《Java 7 并发编程指南》学习概要 (4) 并发集合
  • 原文地址:https://www.cnblogs.com/huaibin/p/15312520.html
Copyright © 2020-2023  润新知