第三章-vector容器基础

文章详细介绍了C++标准库中的vector容器,包括如何通过#include<vector>引入,以及不同方式的初始化,如列表初始化和值初始化。它强调了vector作为动态数组的特性,可以高效增长,并提供了push_back函数用于在尾部添加元素的例子。同时,文章指出了在向vector添加元素时需要注意的迭代器失效问题,以及不能通过下标运算符添加新元素。
摘要由CSDN通过智能技术生成

vector 容器

需要包含头文件#include<vector>

vector<T>;,T 表示容器中潜在元素对象的类型(也就是所容纳对象的类类型)

  • 初始化操作
  1. 列表初始化
    vector<string> v1{"a","an","the"};,只能使用花括号,不能使用圆括号

  2. 值初始化
    vector<int> v1(10);,表示用 10 个 int 类型的元素
    初始值,由容纳的类类型决定(默认初始化)
    对于不存在默认初始化的类,必须提供初始值

  3. 列表初始化和元素数量
    辨析{}和()
    ()中提供的值是用来构造 vector 对象的,元素数量
    {}总是尽可能按照列表初始化来处理提供的值,只有在不能进行列表初始化时才用来构造对象

    void test()
    {
        vector<int> v1(10, 1); // 10个1
        for (auto it = v1.begin(); it != v1.end(); it++)
        {
            cout << *it << " ";
        }
    
        vector<int> v2{10, 1}; //两个对象,一个10,一个1
        for (auto it = v2.begin(); it != v2.end(); it++)
        {
            cout << *it << " ";
        }
    }
    
  • 向容器中添加元素

    1. vector 对象能高效增长
      可以看作动态数组,只管使用即可,容量的问题无需关心

    2. push_back 添加元素
      功能:把一个值当作 vector 对象的尾元素压入到尾部
      如果循环体内有向 vector 对象中添加元素的操作,则不能使用范围 for 循环(end()值改变),与迭代器失效同一个道理

    3. 其他操作
      与 string 对象相似,size()、empty()等
      遍历循环的方式也与 string 对象相似
      在进行比较操作时,只有当元素可以比较时(重载),vector 对象才能进行比较

    4. 下标运算符不能用于添加元素

      vector<int> v1;
      v1[0] = 10; //错误,不能通过下标运算符添加对象
      
      v1.push_back(10);
      v1.push_back(20);
      v1.push_back(30);
      cout << v1[0] << endl; //可以访问已存在的对象
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值