STL容器介绍 vector

vector

一种长度可以根据需要自动改变的容器。

1.定义

加入头文件#include<vector>,定义时vector<数据类型>队列名,如果数据类型是vector,则需要这样定义:vector<vector<数据类型> >队列名,注意>>之间要加空格。

2.访问

(1)访问方式类似数组,通过下标访问。vector<int>a可以使用a[下标]访问,0=<下标<=a.size()。

(2)通过迭代器访问。迭代器是一种类似于指针的东西,需要先定义。通过vector<数据类型>::iterator 迭代器名 来定义。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int>a;
    for(int i=0; i<3; i++)
        a.push_back(i);
    vector<int>::iterator it=a.begin();
    for(; it!=a.end(); it++)
        cout<<*it;
}

输出:012

3.常用函数

(1)push_back()

push_back(x)就是在队列的末尾添加一个x,时间复杂度O(1)。

(2)pop_back()

pop_back()就是在队列末尾删除一个元素,时间复杂度O(1)。

(3)size()

用来获取vector容器中的元素个数,时间复杂度O(1)。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int>a;
    for(int i=0; i<3; i++)
        a.push_back(i);
    cout<<a.size();
}

输出:3

(4)clear()

用来清除vector容器中的所有元素,时间复杂度O(N),N为容器内元素个数。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int>a;
    for(int i=0; i<3; i++)
        a.push_back(i);
    a.clear();
    cout<<a.size();
}

输出:0

(5)insert()

使用insert(it,x)向迭代器it处插入元素x,时间复杂度O(N)。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int>a;
    for(int i=0; i<3; i++)
        a.push_back(i);
    vector<int>::iterator it=a.begin();
    a.insert(it+1,4);
    for(; it!=a.end(); it++)
        cout<<*it;
}

输出:0421

(6)erase()

第一种用法,用erase(it)来删除迭代器it处的元素,时间复杂度O(N)。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int>a;
    for(int i=0; i<3; i++)
        a.push_back(i);
    vector<int>::iterator it=a.begin();
    a.erase(it+2);
    for(; it!=a.end(); it++)
        cout<<*it;
}

输出:01

第二种用法,用erase(x,y)删除区间[x,y)之间的所有元素,时间复杂度O(N)。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int>a;
    for(int i=0; i<3; i++)
        a.push_back(i);
    vector<int>::iterator it=a.begin();
    a.erase(it+1,a.end());
    for(; it!=a.end(); it++)
        cout<<*it;
}

输出:0

(7)resize()

a.resize(n,v)可以改变数组大小为n,n个空间数值赋为v,如果没有默认赋值为0。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int>a;
    a.resize(3,6);
    vector<int>::iterator it=a.begin();
    for(; it!=a.end(); it++)
        cout<<*it;
}

输出:666

(8)front()

a.front()可以返回第一个元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值