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对象的元素外    标准库还提供了一种访问元素的方法   使用迭代器   迭代器是一种检查容器中元素并遍历元素的数据类型

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

 

原文地址:https://www.cnblogs.com/52why/p/7563202.html