美文网首页C++
STL备忘录——vector

STL备忘录——vector

作者: oceanLong | 来源:发表于2017-06-25 10:24 被阅读38次

    前言

    vector是c++中非常常用的容器之一。我们可以把它理解为一个封装好的数组。它的储存方式是通过连续地址储存的顺序结构,原理和数组类似,但它同时又提供了insert,erase这些方法。

    从它的原理中,我们就可以猜到。vector的读取速度非常快。但在写入尤其是插入方面的性能是无法和list相比的。

    引入

    #include<vector>
    

    构造方法

    // 创建一个默认的vector
    vector<int> v = vector<int>();
    
    // 创建一个长度为3的vector
    vector<int> v = vector<int>(3);
    
    // 创建一个长度为5,且初始值全部为1的vector
    vector<int> v = vector<int>(5,1);
    

    vector<int> v = vector<int>();
    
    // 在尾部插入元素 
    v.push_back(10);
    
    // 在中间插入元素
    v.insert(v.begin()+i,a);
    
    

    这里要注意,在使用insert方法时,一定要配合.begin()使用,不能直接传入索引。

    vector<int> v = vector<int>();
    
    // 获取v首个元素的迭代器
    v.begin()
    
    // 获取v最后一个元素的迭代器
    v.end();
    
    // 获取v的第3个元素的值
    v[3]
    

    遍历

    vector<int> vec = vector<int>();
    
    vector<int>::iterator it;
    for(it=vec.begin();it!=vec.end();it++)
        cout<<*it<<endl;
    

    vector<int> vec = vector<int>();
    
    // 删除第2个元素
    vec.erase(vec.begin()+2);
    
    // 清空vec
    vec.clear();
    

    获取长度

    vector<int> vec = vector<int>();
    
    // 获取vec的长度
    vec.size();
    
    

    算法

    (1) 使用reverse将元素翻转:需要头文件#include<algorithm>

    reverse(vec.begin(),vec.end());将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含.)

    (2)使用sort排序:需要头文件#include<algorithm>

    sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).

    可以通过重写排序比较函数按照降序比较,如下:

    定义排序比较函数:

    bool Comp(const int &a,const int &b)
    {
        return a>b;
    }
    

    调用时:sort(vec.begin(),vec.end(),Comp),这样就降序排序。

    相关文章

      网友评论

        本文标题:STL备忘录——vector

        本文链接:https://www.haomeiwen.com/subject/jlelcxtx.html