STL标准函数库 vector容器

1.vector的功能
vector包含着一系列连续存储的元素,性质和数组十分相似。
访问元素或者在末尾插入元素常数级别,插入元素是线性级别。

要注意的是,vector的尾部元素是

vector<int> ve;
vector<int>::iterator::iter;
iter=ve.end()-1;    //这里一定要减
cout<*ite<<endl;

2.vector的操作

vec.begin();    //返回第一个元素的迭代器 
vec.end();
vect.empty();
vec.front();    //返回第一个元素
vec.push_back();    //在最后添加一个元素
vec.pop_back();     //移除最后一个元素 
#include<bits/stdc++.h>
using namespace std;

vector<int> vec
int main(){
    vec.push_back(1);       //尾部插入元素
    vec.push_back(2);
    vec.push_back(5);

    //迭代器
    vector<int>::iterator ite;
    for(ite=vec.begin();ite!=vec.end();++ite){
        cout<<*ite<<endl;
    } 

    //插入元素,在第i+1个元素前面插入a 
    vec.insert(vec.begin()+i,a); 
    //删除元素
    vec.erase(vec.begin()+2);  //删除第三个元素 

    vec.size();
    vec.clear();

    return 0;
}
//vector的元素还可以是结构体,但是结构体一定要定义为全局 
#include<bits/stdc++.h>
using namespace std;
typedef struct rect{
    int id,length,width;
    //对于向量元素是结构体的,可以在结构体内部定义比较函数
    bool operator< (const rect &a)  const
    {
        if(id!=a.id)
            return id<a.id;
        else
        {
            if(length!=a.length)
                return length<a.length;
            else
                return width<a.width;
        }
    }
}Rect;
int main(){
    vector<Rect> vec;
    Rect rect;
    rect.id=1;
    rect.length=2;
    rect.width=3;
    vec.push_back(rect);
    vector<Rect>::iterator it=vec.begin();
    cout<<(*it).id<<(*it).length<<(*it).width<<endl;
return 0;
}
(1) 使用reverse将元素翻转:

reverse(vec.begin(),vec.end());

(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),这样就降序排序。

猜你喜欢

转载自blog.csdn.net/qq_37360631/article/details/81326844