STL(凑字数)

万能头

#include<bits/stdc++.h>

STL标准库

standard template library
C++自带的函数库,包含一些可以直接使用的类或者函数,如:sort,string,vector,list,map,set,queue,priority_queue,stack,pair等

template自适应类型

template<class T>
void swap(T &a,T&b)
{
	T=a;
	a=b;
	b=c;
}

sort

void sort(RandomIt first,RandomIt last,Compare comp);
默认从小到大排列

int a[]={1,2,3};
sort(a,a+3);

bool cmp(int a,int b)
{
	return a>b;
}
sort(a,a+3,cmp);

string

//读入一个字符串,以空格为间隔符
cin>>str;
//读入一行
getline(cin,str);

string类函数

vector

变长数组,存储多个相同类型元素的容器。

//存储int类型变量的vector,默认size为0
vector<int> vec;
//size为n
vector<int> vec(n);
//迭代器声明
vector<int>::iterator i=vec.begin()
//begin返回的是第一个元素的迭代器,而end返回的是最后一个元素的下一个

//将a推入vec的末尾
vec.push_back(a);
//删除最后一个元素
v.pop_back()
//获取元素个数
v.size()
//修改容量
v.resize(int n)
//判断是否为空
v.empty()
//清空
v.clear()
//插入
v.insert(iter,a)
//删除
v.erase(iter)
//返回第一个元素的引用
v.front()
//返回最后元素的引用
v.back()
[关于引用](https://blog.csdn.net/sinat_42483341/article/details/87465982)

//输出
for(int i=0;i<vec.size();i++)
{
	cout<<vec[i];
}
for(auto beg=vec.begin(),end=vec.end();beg!=end;beg++)
{
	cout<<(*it);
}
//c++11用法
for(auto it:vec)
{
	cout<<it;
}

vector和数组的区别:

list

双向链表
vector和list

list<int>lis;
//前端,中间,后端插入
lis.push_front(item);
lis.push_back(item);
auto it=find(lis.begin(),lis.end(),val);
if(it!=lis.end())
	lis.insert(it,item)
for(auto it=lis.begin();it!=lis.end();it++)
	cout<<*it;
for(auto it:list)
	cout<<it;
//stl中的find函数,只有string的find方法是返回的下标,因为string是顺序索引,set,map,multiset,multimap都不是顺序索引的数据结构,所以返回的是迭代器

map

key-value形式

map<int,string>mp;
map[0]=a;
for(auto it:mp)
	cout<<it.fist<<it.second;
//返回map中最小key的迭代器
mp.begin()

map中迭代器无法直接和数加减,只能使用–、++

pair

pair<int,int> p;
pari=make_pair(1,1);
cout<<p.first;
cout<<p.second;

set

集合,所有元素唯一,并且按照值自动排序

set<int> s;
s.insert(item);
//最小元素的迭代器
s.begin();

队列

先进先出

queue<int> q;
q.push(item);
q.pop();
q.front();

优先级队列

优先级队列按照元素的优先级顺序,从高到低弹出,默认是最大

priority_queue<int> pq;
/*priority_queue<Type, Container, Functional>
若直接用priority_queue<int>,他就用通过缺省值使用默认的方法和容器(vector),
即自顶之下,从大到小。若你需要比较其它的值,好比要比较一个pair<int, string> 
然后自顶至下是string字典序从小到大,你就需要
priority_queue<pair<int,string>,vector<pair<int, string>>, cmp>,
cmp是一个结构体,在这个结构体中重载运算符()即可。*/
struct cmp{
    bool operator()(const pair<int,string> p1, const pair<int,string> p2) {
        return p1.second > p2.second;//因为priority_queue的top相当于vector的back
 
    }
    */
 
};

先进后出

stack<int> s;

s.top()

函数

swap(a,b)//交换两个元素的值
reverse(str.begin(),str.end());//把一个容器逆序

参考手册

https://zh.cppreference.com

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值