• C++ 初读vector


    vector

    向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。

    Character

    高效

    C++标准要求vector在运行时高效快速地添加元素。既然能高效增长,那么定义长度也就没有多大必要了。事实上定义长度反而会降低性能,除非所有元素值一样(那你何不“重复定义初始化”)。一旦值不同,最好的办法还是创建空vector,然后push_back元素。

    动态增长的副作用:不能使用范围for循环;可能使迭代器失效。

    Initial

    如何选择初始化

    • 直接初始化

      • 初始值已知且数量确定
      • 是另一个对象的副本
    • 创建空vector,然后push_back元素

      • 数量不确定

    代码演示

    vector<string> sv;                   //默认初始化
    vector<string> sa(sv);               //副本初始化
    vector<string> sb = sv;              //同上
    vector<string> sc(3, "hello");       //重复定义初始化
    vector<string> sd = {"a", "b", "c"}; //列表初始化
    vector<string> se(10);               //值初始化
    
    //()和{}
    //()指示值数量,{}指示具体值
    vector<int> ia(10); //有10个元素
    vector<int> ib{10}; //初始值为10
    
    vector<int> ic(10, 1); //10个1
    vector<int> id{10, 1}; //10和1
    

    Function

    All the operation

    操作 含义
    v.empty() 为空?真:假
    v.size() (::size_type)元素个数
    v.push_back() 尾端插入元素
    v[n] return &
    v1 = v2 将v2元素拷贝到v1
    v1 = {a,b,c} 将列表中的元素拷贝到v1中
    v1 == v2 数量相同,元素相同
    <,<=,>,>= 以字典序比较

    注:v.size()的返回同string一样,需要用dealtype(v.size())定义;v[n]返回的是引用。比较运算符取决于元素的值是否可以比较(自定义类需要重载运算符)。不能用下标添加元素,改值可以。

    Pushelem

    把一个值压(push)到vector对象的尾端。

    如果循环体内部包含有向vector对象中添加元素的语句,就不能使用范围for循环。

    string word;
    vector<string> text;
    while(cin>>word){
        text.push_back(word);
    }
    

    Printelem

    vector<string> text={"hello","world"};
    for(decltype(text.size()) i=0;i!=text.size();++i)
    {
        cout<<text[i];
    }
    cout<<endl;
    
  • 相关阅读:
    需求分析-配置软件开发的出发点
    有关tab页的
    有关菜单的
    有关树形结构的
    需求分析-新闻发布的完整需求
    需求分析-网盘类的需求分析
    需求分析-有关有关富文本编辑器的需求
    Objective-C中的instancetype和id区别
    webservice远程调试开启
    Controller之间传递数据:Block传值
  • 原文地址:https://www.cnblogs.com/goodswarm/p/10539895.html
Copyright © 2020-2023  润新知