STL——vector

vector

“变长数组”——长度根据需要而自动改变

1、头文件
#include<vector>
using namespace std;

2、定义
vector<int>v;
vector<int>v[manx];//v[0]~v[manx-1]中的每一个都是一个容器
vector<vector<int> >vt;//>>之间要加空格//可以当做两个维都可以变长的数组
//类型名也可以是int、double、char,或者STL标准容器:vector、queue等

3、访问
(1)下标访问,和普通以为数组一样………………v[i]
(2)通过迭代器访问…………………………………………………*it
定义it:vector<int>::iterator it;

4、常用函数(见表格)

5、示例(见代码)

6、用途:
(1)储存数据(元素个数不确定时可以很好地节省空间)
(2)实现邻接表存图
基本操作复杂度
begin()返回第一个元素的迭代器O(1)
end()返回最末元素的下一个位置的迭代器O(1)
push_back()push_back(x)就是在vector后面添加一个元素xO(1)
pop_back()删除最后一个元素O(1)
size()返回vector中的元素数量的大小O(1)
clear()清空所有元素O(N)
insert()insert(it,x)用来向任意迭代器it出插入一个元素xO(N)
erase()erase(it)删除迭代器为it的元素O(N)
erase(frist,last)即删除[frist,last)内的所有元素O(N)

// v[i]和*(v.begin()+i)是等价的

其他
front()返回第一个元素
back()返回最末一个元素
empty()判断Vector是否为空(返回true时为空)
swap()交换两个Vector
#include<algorithm>
#include<stdio.h>
#include <iostream>
#include<vector>
using namespace std;
vector<int>v;
int main()
{
    int a;
    printf("输入:");
    for(int i=1;i<=9;i++)
    {
        scanf("%d",&a);
        v.push_back(a);
    }
    v.pop_back();
    sort(v.begin(),v.end());
    printf("输出:");
    for(int i=0;i<(int)v.size();i++)
    {
        printf("%d ",v[i]);
    }
    cout<<endl;
}

在这里插入图片描述

补充:
vector与deque不同,其内存占用空间只会增长,不会减小。比如你首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个。所有空间在vector析构时回收。
empty()是用来检测容器是否为空的,clear()可以清空所有元素。但是即使clear(),所占用的内存空间依然如故。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值