AKSZ-STL
2024-05-05 18:01:37
发布于:广东
字串与子序列
名称 | 性质 |
---|---|
字串 | 一定是连续的 |
子序列 | 不一定是连续的 |
表达式
表达式:前缀表达式·中缀表达式·后缀表达式(常考)
中缀转后缀
1.根据运算符的优先级对中缀表达式
2.将运算符移到对应的符号后面
3.去掉所有括号
修改前:
修改后:
##STL模板库
Standard Template Library
STL包括容器(Containers)$ swap()sort()$均在STL中。
常见容器:map set list queue vector
vector
vector的定义
是一个能够自动调整大小的动态数组,可以在运行是动态地增加或减少其大小。
vector<类型名> 动态数组名;//头文件:#include<vector>
.
vector<int> v;//定义一个int类型
vector<char> v;//定义一个char类型
vector<data> v;//定义一个struct(data)类型
迭代器
格式:容器类名::iterator 变量名
迭代器常用操作
常用操作 | 含义 |
---|---|
begin() | 指向容器第一个位置的迭代器 |
end() | 指向容器尾部的下一个位置的迭代器。 |
++//将迭代器指向下一个位置 | |
*//获取迭代器指向的元素 |
vector 的遍历
for(int i=0;i<s.size();++i){
cout<<v[i]<<" ";
}
vector<int>::iterator it;
for(it=v.begin();it!=v.end();++it){
cout<<*it<<" ";
}
set
定义:set容器是一种自动升序且不含重复元素的数据结构。
添加元素:s.insert()
set<int> se;
set<int>::iterator it;
//添加数值
se.insert(4);
se.insert(2);
se.insert(6);
se.insert(1);
方法 | 功能 | 示例 |
---|---|---|
size() |
查看当前容器有多少数据个数 | s.size(); |
insert(x) |
向当前容器插入数据 | s.insert(); |
eraser(x) |
删除值为的所有元素 | s.eraser(); |
find(x) |
查找集合中的元素,存在返回该元素的迭代器,否则返回end(); |
s.find(); |
lower_bound(x) |
查找第一个大于等于的下标 | s.lower_bound(x) 或s.lower_bound(s.begin(),s.end(),x); |
upper_bound(x) |
查找第一个大于的下标 | s.lower_bound(x) 或s.lower_bound(s.begin(),s.end(),x); |
count(x) |
1在0不在 | s.count(x) |
注: |
lower_bound(x)
的含义是查找第一个大于等于的下标;upper_bound(x)
的含义是查找第一个大于的下标。
map
定义:map是C++STL容器中的容器之一,它提供了键-值对的储存方式存储映射关系。每个键必须是唯一的!
时间复杂度:;
只能通过键来访问值,不能用值来访问键。
创建容器:
#include<bits/stdc++.h>
using namespace std;
int main(){
map<string,int> mp;
return 0;
}
使用迭代器:
#include<bits/stdc++.h>
using namespace std;
map<string,int> mp;
map<string,int>::iterator it;
int main(){
mp[1]="Apple";
mp[2]="Banana";
mp[3]="Orange";
for(it=mp.begin();it!=mp.end();++it){
cout<<"Key:"<<it->first<<",Value:"<<it->second<<endl;
// 键 值
}
return 0;
}
方法 | 时间复杂度 | 功能 | 示例 |
---|---|---|---|
size() |
查看当前容器有多少数据个数 | mp.size(); |
|
eraser(x) |
删除值为的所有元素 | s.eraser(); |
|
find(x) |
查找集合中的元素,存在返回该元素的迭代器,否则返回end(); |
s.find(); |
|
empty() |
查看当前容器是否为空 | s.empty() |
STL重磅推荐
1.容器
推荐理由
容器中方法的时间复杂度为,而的则是.
容器底层逻辑
快速的哈希(快速的映射 时间复杂度为).
2.容器
bitset<N> c;
bitset<n>b(s);
这里空空如也
有帮助,赞一个