STL总结篇(参考自《算法竞赛入门经典》)

本文介绍了C++标准模板库STL中的核心内容,包括排序算法(如sort及其自定义比较),常用数据结构如vector、set和map,以及栈、队列与优先队列的使用实例。通过《算法竞赛入门经典》为参考,展示了如何在实际问题中运用这些工具进行数据处理和算法设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STL指的是C++的标准模板库,它包括一些算法和容器,这篇文章将会总结一些常用的STL(参考自《算法竞赛入门经典》)

  1. 排序与检索
  2. 不定长数组:vector
  3. 集合:set
  4. 映射:map
  5. 栈,队列与优先队列
  6. 测试STL(略)
  7. 应用

1.排序与检索

#include<bits/stdc++.h>
using namespace std;

int a[]={10,0,2,5,6,7};

int main(){
    sort(a,a+6);
    for(int i=0;i<6;i++) cout<<a[i];
    return 0;
}

//0256710

sort使用数组元素默认的大小比较运算符进行排序,只有在需要按照特殊依据进行排序时才需要传入额外的比较函数。

sort数组的默认排序顺序是从小到大的,可以自定义一个compare函数来改变排序方式,也可以通过C++中的比较函数less,greater,这样就不需要我们自己家重新写比较函数了。

#include<bits/stdc++.h>
using namespace std;

int a[]={10,0,2,5,6,7};

int cmp(int a,int b){
    return a>b;
}//从大到小

int main(){
    sort(a,a+6,cmp);
    //sort(a,a+6,greater<int>());
    //sort(a,a+6,less<int>());
    for(int i=0;i<6;i++) cout<<a[i]<<" ";
    return 0;
}

//10 7 6 5 2 0

algorithm头文件中的sort可以给任意对象排序,排序对象可以存在一个普通数组里(sort(a,a+n))也可以存在vector里(使用sort(v.begin(),v.end()调用)包括内置类型和自定义类型,前提是类型定义了“<”运算符。排序之后可以用lower_bound查找大于或者等于x的第一个位置。待排序、待查找的元素可以放在数组里,也可以放在vector里。

(还有一个unique函数课一删除有序数组中的重复元素)

2.不定长数组:vector

vector就是个不定长数组,不仅如此,它把一些常用的操作封装在了vector类型内部。

例如,我们假设a是一个vector,vector<int> a;

读取大小:a.size();

改变大小:a.resize();

向尾部添加元素:a.push_back();

删除最后一个元素:a.pop_back();

清空:a.clear();

测试是否为空:a.empty();

vector可以直接赋值,也可以作为函数的参数或者返回值,而无需像传递数组那样另外用一个变量指定元素个数。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值