【汇总,不定期更新】c++实用的STL

不定长数组vector

定义

不定长数组就是可以在程序中随意更改数组长度的一种STL。

优点

正如字面上理解,不定长数组,就是长度没有确定的数组,这样可以最大限度地节约空间,而且作为一个独立的类型,vector还有自己特色操作。

如何定义

怎么定义一个int类型的vector:

vector<int>a;

如何取用元素

vector类型和数组非常的相像,支持下标,例如a[n]。

基本操作

  1. int len=a.size();取用a的长度;类似于数组的sizeof();//对于所有的容器都生效
  2. a.resize(100);给a分配100个空间,下标是0~99;
  3. a.push_back(234);向a的尾部添加一个元素234;
  4. a.pop_back();a的末尾删掉一个元素;
  5. a.clear();清空a;
  6. a.empty();判断a是不是空的;//对于所有的stl容器都生效
  7. a.begin()是一个头指针;a.end()是超尾指针(左闭右开区间);

vector排序

和一般的数组一样,vector也可以用系统内置快排sort
不过写法不太一样。
下面给个例子,加入要给a这个int类型的vector排序:

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

这样就完成了对a的排序。(默认从小到大)

vector不定长内部实现

如果你没有给vector定义多长的空间,或者你开的空间过小,但是你仍然在用push_back,会不会有溢出风险?答案是不会。如果你存了n个元素,它的空间是二的幂,而且>=n,<=2n;这玩意儿类似于倍增的思想,如果溢出就开多一倍的空间。

队列queue

队列没有clear操作

队列的clear操作应自己手写。

while(q.size())q.pop();

这样啊就可以实现队列q的清空操作。

一些操作

a.size()
a.clear()
a.empty()
a.pop()
a.front()
a.push()

deque双向队列
q.push_front()
q.push_back()
q.pop_fr
q.pop

set元素不重复的集合

struct poi
{
    double x,y;
    int id;
    poi(){};
    poi(double x_,double y_)
    {
        x=x_,y=y_;
    }
};
bool operator<(poi a,poi b)
{
    return a.x+eps<b.x||a.x<b.x+eps&&a.y<b.y;
}
set<rec>s;

multiset多重集

lower_bound()
upper_bound()

map映射

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值