STL(基础入门)

Ⅰ. 算法库 (algorithm)

1、sort

1.区间:[a,b)

即sort(a,a+n) (a为数组,n为数组长度)

2.作用

对区间按照从小到大的顺序进行排序

3.定义结构体——比较类型           

    struct node {
        int a, b;
        bool operator < (const node& m) {
            if (a == m.a)
                return  b > m.b;
            return a < m.a;
        }
    };                                                                                                                          

如果a相等按照b从大到小排序,反之按照a从小到大排序(以上含重载运算符知识)

即sort(a, a+n, node)(a为数组,n为长度,node为定义结构体)

2、unique (配合sort)

1.区间:[a,b)

即unique(a, a+n) (a为数组,n为长度)

2.作用:

“删除”序列中所有相邻的重复元素

3、 find 

1.区间:[a,b)

即find(a, a+n, b) (a为数组,n为长度,b为查找值)

2.作用:

返回的是首个相同值的下标

4、 lower_bound(配合sort)

1.区间:[a,b)

即lower_bound(a, a+n, b)(a为数组,n为长度,b为查找值)

2.作用:

返回首个大于等于查找值的下标

5、upper_bound(配合sort)

1.区间:[a,b)

即upper_bound(a, a+n, b)(a为数组,n为长度,b为查找值)

2.作用:

返回首个大于查找值的下标

6、reverse

1.区间:[a,b)

即reverse(a, a+n)  (a为数组,n为长度)

2.作用:

对区间进行翻转

Ⅱ. pair

1.格式   

pair<T1,T2> p   (T1、T2表示类型(int、double、string……))

2.声明     

typedef pair <T1,T2>  pll;  用pll直接声明pair类型结构

pll  p;  

 Ⅲ.基础函数

1.clear()

清空容器

2.empty()

判断容器是否为空

3.size()

返回容器元素个数

4.begin()、end()

分别返回指向开头的迭代器和结尾的后一位迭代器

Ⅳ. 容器库(vector、stack、queue)

1、vector

1.初始化

一维初始化  vector<T> v(n,a) 

T为类型(int、double、string……),n为初始长度,a为初始元素

二维初始化 vector<vector<T>> v(m,vector(n,a))

T为类型(int、double、string……),m为行数,n为列数,a为初始元素

2.末尾插入元素

v.push_back(a)   a为插入元素

3.删除末尾元素 

v.pop_back()

4.删除区间元素

erase(v.begin() + a , v.begin () +b);

提示:

1.erase适用string类型,在string库中

 2.返回最后被删除的下一个元素的迭代器

2. stack

1.初始化

stack<T> v;     T为类型(int、double、string…)

2.入栈

v.push(a)  

 3.出栈(弹出栈顶)

v.pop()    (需判断是否空栈)

4.访问栈顶

v.top() 

 3.queue

1.初始化

 queue<T> v   T为类型(int、double、string…)

2.入队

v.push(a)

3.访问队头

v.front()

 4.出队(弹出队头)

v.pop()    (需判断是否空栈)

 4.dequeue(双向队列)(可用下标访问)

1.格式

dequeue <T>  v   T为类型(int、double、string…)

2.插入 

push_back()  队头放入元素

push_front()  队尾放入元素

3.删除   

pop_back() 删除队头元素

pop_front()  删除队尾元素

5.piority_queue (优先队列)

1.格式

priority_queue <T> v(默认元素大的优先出队)   T为类型(int、double、string…)

priority_queue<T, vector<T>, greater> v    优先元素小的先出队 

2.出队

 v.pop()   

3.入队

 v.push(a)

4.访问队头

v.top()

 6.set

1.初始化

set<T> v    T为类型(int、double、string…)

默认从小到大排序

2. 插入元素

v.insert(a)   (不会重复插入元素)

3.遍历set

set<T > ::interator it 

for(it=v.begin();it!=v.end();it++)

   ……

4.删除元素

v.erase(a)  

5.查找个数

v.count(a)

6.查找位置(返回迭代器)

v.find(a)

二分:

low_bound(a)      返回首个不小于查找值的下标

upper_bound(a)      返回首个大于查找值的下标

同样结合 set<T> ::iterator it  进行使用

7.map 

1.格式

map<T,int> v;

…(其余同set )

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kk_阿白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值