STL基础

STL

STL:C++标准模板库(Standard Template Library)

万能头文件 #include<bits/stdc++.h>

时间复杂度

时间复杂度:又称时间复杂性,用来描述程序运行时间与输入数据规模的函数关系
时间复杂度只保留最高项,忽略常数
常见算法的复杂度 : O(n) O(n^2) O(nlogn) O(2^n)

容器

string

动态长度字符串

构造函数: string s1=“1234”
迭代器:string::iterator it=s1.begin()
常用函数:

clear() 清空所有元素
length() 长度
push_back() 在最后添加一个元素
append() 向string的后面追加字符或字符串
find() 在指定范围内查找和目标元素值相等的第一个元素
erase() 删除指定元素

vector

动态数组,内存连续

构造函数:
vector< int >v1 ; vector< string >v2(“1234”);
vector< int >v3(5,2) ; vector< int >v4(v3);
常用函数:push_back()
pop_back() 删除最后一个元素
front() 第一个
back() 最后一个
insert() 插入
erase()
size() 长度

queue

队列,先进先出(FIFO)

构造函数: queue< int >qu;
常用函数:
push() 接到队列末端
pop() 删除队列中最靠前位置的元素
front() back() size()
empty() 判断容器是否为空

stack

堆栈,先进后出(FILO)

构造函数:stack< int >st;
常用函数:push() pop() size() empty()
top() 取出栈顶元素,不会删掉栈里边的元素

set

集合,元素有序排列、不重复

构造函数: set< int >se
常用函数:insert() erase() find() size() clear()
count() 元素计数
lower_bound(x):大于等于x的第一个元素位置,不存在返回end()
upper_bound(x):大于x的第一个元素位置,不存在返回end()

map

字典,key-value键值对,按key有序排列

构造函数: map<int,int>mp
常用函数:erase() find() size() clear() count() lower_bound() upper_bound()
可以像数组一样通过[]访问

list

双向链表,内存不连续

构造函数: list< int >li
常用函数:push_back() push_front() pop_back() pop_front() insert() erase()

函数

sort
vector<int>ve({4,3,5,2,6,1}); 
sort(ve.begin(),ve.end());
sort(ve.begin(),ve.end(),greater<int>());
bool cmp(int a,int b)
{
	if(a%2==b%2) return a<b;
	return a%2>b%2;
}
sort(ve.begin(),ve.end(),cmp);
reverse

翻转数组、容器

int x[1005];
reverse(x+1,x+1+n);
vector<int>ve;
reverse(ve.begin(),ve.end());
next_permutation

求全排列中字典序更大的一个序列,不存在更大时返回false

int x[105];
int n=5;
for(int i=1;i<=n;i++)x[i]=i;
do{
	for(int i=1;i<=n;i++)printf("%d ",x[i]);
	puts("");
}while(next_permutation(x+1,x+1+n));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值