zoukankan      html  css  js  c++  java
  • C++ STL-vector

    1.vector基础

    vector是同一类型对象的集合   每一个对象都对应了一个整数的索引值  和string一样  

    我们在使用vector之前   都要包含相应的头文件 

    #include <vector>
    using std::vector;

    vector的定义

    vector<T>ivec;//T为保存对象的类型   可以是其他的各种类型   结构体也行     ivec是创建的容器名称

    2.vector的定义与初始化

        vector<T>v1;      //创建一个空的容器
        vector<T>v2(n,i);  //创建一个vector容器  其中包括n个值为i的元素
        vector<T>v3(v2);   //创建一个v3   是v2的副本
        vector<T>v4(n);   //创建一个有初始化的元素的n个副本

    3.vectot的增长

    vector对象的重要属性在于   vector可以在运行时高速的添加元素   

    因为vector增长的效率高  所以在元素值已知的条件下   最好是动态的添加元素

    vector在动态添加元素的过程中   如果发现分配的空间不够   会成倍的扩增空间

    所以在已知元素的最大个数的情况下  我们可以设置vector的大小

    vector<T>v(n);    将容器的大小定为n   以防止其浪费过多的存储空间

    4.vector对象的操作

        v.empty();    //判断容器v是否为空
        v.size();     //返回容器v的大小
        v.push_back(t); //往容器v中添加元素t
        v[i]    //返回容器v中索引值为i的元素
        v1==v2  //判断容器v1,v2是否相等
        v1=v2   //将容器v2复制给予v1

    5.vector的下标操作

    一般情况之下  我们可能会使用int型的变量来表示vector的下标   来遍历vector

    for(int i=0;i<v.size();++i)

    但是我并不推荐你们使用int型去遍历     可以的话  应该养成使用vector<T>::size_type类型的变量去遍历

    for(vector<T>::size_type ix=0;ix!=v.size();++ix)

    6.迭代器简介

    除了使用下标来访问vector对象的元素外    标准库还提供了一种访问元素的方法   使用迭代器   迭代器是一种检查容器中元素并遍历元素的数据类型

    标准库为每一种标志容器提供了一个迭代器类型

    下面简单的讲解一下vector迭代器的使用   其他的迭代器使用方法基本差不多

    迭代器的定义:

     vector<T>::iterator iter;

    这条语句定义了一个名为iter的迭代器      其数据类型是vector<T>定义的iterator类型

    这里附加讲一下  vector容器的begin与end操作

        v.begin();
        v.end();
        for(iter=v.begin();iter!=v.end();++iter)

    begin与end用于返回迭代器    begin返回的是容器的开始位置    end返回的接受位置

    所以我们可以使用上面这种循环去遍历vector容器

    同时我们可以使用迭代器直接修改日期中的值

    *iter=k;
    *iter->num=k;

    如果容器保存的是数字字符类型的元素   直接像上面第一行一样修改值    是结构体的话  就参照第二行

    稍微提一下   存在const的迭代器   这种迭代器只有读的权力   不能改写容器中的值

    vector<T>::const_iterator iter;

    1.vector基础

    vector是同一类型对象的集合   每一个对象都对应了一个整数的索引值  string一样  

    我们在使用vector之前   都要包含相应的头文件 

    #include <vector>

    using std::vector;

    vector的定义

    vector<T>ivec;//T为保存对象的类型   可以是其他的各种类型   结构体也行     ivec是创建的容器名称

    2.vector的定义与初始化

        vector<T>v1;      //创建一个空的容器

        vector<T>v2(n,i);  //创建一个vector容器  其中包括n个值为i的元素

        vector<T>v3(v2);   //创建一个v3   v2的副本

        vector<T>v4(n);   //创建一个有初始化的元素的n个副本

    3.vectot的增长

    vector对象的重要属性在于   vector可以在运行时高速的添加元素   

    因为vector增长的效率高  所以在元素值已知的条件下   最好是动态的添加元素

    vector在动态添加元素的过程中   如果发现分配的空间不够   会成倍的扩增空间

    所以在已知元素的最大个数的情况下  我们可以设置vector的大小

    vector<T>v(n);    将容器的大小定为n   以防止其浪费过多的存储空间

    4.vector对象的操作

        v.empty();    //判断容器v是否为空

        v.size();     //返回容器v的大小

        v.push_back(t); //往容器v中添加元素t

        v[i]    //返回容器v中索引值为i的元素

        v1==v2  //判断容器v1,v2是否相等

        v1=v2   //将容器v2复制给予v1

    5.vector的下标操作

    一般情况之下  我们可能会使用int型的变量来表示vector的下标   来遍历vector

    for(int i=0;i<v.size();++i)

    {                        }

    但是我并不推荐你们使用int型去遍历     可以的话  应该养成使用vector<T>::size_type类型的变量去遍历

    for(vector<T>::size_type ix=0;ix!=v.size();++ix)

    {                        }

    6.迭代器简介

    除了使用下标来访问vector对象的元素外    标准库还提供了一种访问元素的方法   使用迭代器   迭代器是一种检查容器中元素并遍历元素的数据类型

    标准库为每一种标志容器提供了一个迭代器类型

     

  • 相关阅读:
    js对象数组(JSON) 根据某个共同字段 分组
    一个 函数 用来转化esSearch 的range 条件
    关于 vuex 报错 Do not mutate vuex store state outside mutation handlers.
    android listview 重用view导致的选择混乱问题
    android SDK和ADT的更新
    Android中adb push和adb install的使用区别
    pycharm中添加扩展工具pylint
    su Authentication failure解决
    Putty以及adb网络调试
    有关android源码编译的几个问题
  • 原文地址:https://www.cnblogs.com/52why/p/7563202.html
Copyright © 2011-2022 走看看