初始化:
vector
这样是不提前分配空间的定义,这时候输出s.size()的值是0
这时候我们不可以通过s的索引来访问s内的元素,只能通过s.push_back(x)函数或者s.insert(posion, x)来自动扩容,扩容后我们就可以通过下标来访问里面的元素了
vector
这是提前分配内存的写法,这样就是提前给s了100个int的内存,然后这时候我们输出s.size()的值会是100,并且可以i通过索引访问0到99之间的值,但值都是0,也可以赋值初始化就是在100后面再加一个参数,就是这一百个元素的初值
存数
可以s.push_back(x),末尾插入一个元素
s.insert(posion, x)在迭代器posion前插入x,注意这里的第一个参数是迭代器,类似于s.begin()
也可以通过数组下标来存值s[1] = 3;
删除
s.erase(posion) 删除迭代器在posion位置的数
s.pop_back()就是删除最后一个值
查询
查询一个值可以直接用索引查
也可以用方法查询特定位置的值
s.front()就是第一个值
s.back()就是最后一个值
常配合使用的函数有lower_bound(), sort()
lower_bound可以查看我关于lower_bound的题解
链接
返回s中不小于x这一特定值的迭代器
lower_bound(s.begin(), s.end(), x);
给s中的元素排序
sort(s.begin(), s.end(), cmp);
cmp这是个自定义排序的函数实现方法:
bool cmp(int x, int y)
{
return x > y;降序排序(可自定义)
}
不写第二个参数的话就是默认升序
上一篇:Slam14讲ch03