STL-vector

STL-vector

前言

vector是什么呢?

vector是动态数组,就是数组的长度可以变化。

引入vector的头文件为:

#include <vector>
#include <bits/stdc++.h>//(万能)

定义

vector的定义方式为:

vector</*数据类型*/> /*名称*/;

比如:

vector<int> vec;

↑这行代码的意思是:定义一个叫vecint类型的动态数组。

插入元素

push_back(/*元素*/)可以在动态数组最后插入一个新的元素,比如:

vector<int> vec;//目前:[]
vec.push_back(1);//目前:[1]
vec.push_back(2);//目前:[1, 2]
vec.push_back(3);//目前:[1, 2, 3]

删除元素

如果想删除元素,可以使用pop_back()删除动态数组中最后一个元素。

⚠注意:这里括号内不要加东西。

⚠注意:如果动态数组内已经为空,再使用pop_back()会出错。

举例:

vector<int> vec;//目前:[]
vec.push_back(1);//目前:[1]
vec.push_back(2);//目前:[1, 2]
vec.push_back(3);//目前:[1, 2, 3]
vec.pop_back();//目前:[1, 2]
vec.pop_back();//目前:[1]
vec.pop_back();//目前:[]
vec.pop_back();//出错

访问数组长度

访问数组的长度用/*数组名称*/.size(),比如:vec.size();

访问动态数组中某个元素跟普通的数组访问方式一样,比如:vec[0]

但是需要注意不要超过数组大小范围,动态数组大小范围为vec.size()-1

输出元素

输出一个动态数组里的所有数据像这样:

vector<int> vec;
for(int i=0; i<vec.size(); i++)
    cout<<vec[i]<<" ";

修改数组中的值

想要修改动态数组中的某个值也跟普通数组一样:

vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec[0]=2;
vec[1]=1;

清空数组

动态数组清空所有数据且释放内存的格式为:

vector</*数据类型*/>().swap(/*名称*/);

比如:

vector<int>().swap(vec);

清空之后可以使用/*名称*/.empty()来检测这个动态数组的大小是否为0。

数组整体赋值

动态数组可以整体赋值,比如:

vector<int> vec1;
vector<int> vec2;
vec1.push_back(1);
vec1.push_back(2);
vec2=vec2;//使vec2与vec1一模一样

数组排序

动态数组的排序需要使用迭代器(vec.begin(), vec.end())

如果全排序则这样:

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

如果排序前n个数则这样:

sort(vec.begin(), vec.begin()+n);

数组的数据类型

vector数组的数据类型也可以自定义,比如:

struct Stu{string name; int score;};
int main(void)
{
    vector<Stu> vec;
}

自定义结构体数据类型对于动态数组的常见操作:

struct Stu{string name; int score;};
int main(void)
{
    vector<Stu> vec;
    Stu a;//定义学生a
    a.name="abc";//赋值
    a.score=100;
    vec.push_back(a);//将a压入vec
    vec.push_back({"abcd", 90});//或者这样一步完成
}

初始化数组

想将动态数组初始化一个数或数组大小这样:vector</*数组类型*/> /*数组名*/(/*大小*/, /*值*/);,比如:

int main(void)
{
    vector<int> vec(100, 0);
    //设置大小为100且所有数为0的动态数组
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值