目录
基本的STL(c++)
一、向量(vector)
#include<bits/stdc++.h>
using namespace std;
//向量(vector)
void _solve(){
vector<int> dp;
vector<vector<int> > dp2(5,vector<int>(6,10));//5含6列赋值为10(二维)dp2[5][6]
vector<vector<vector<int> > > dp3(5,vector<vector<int> >(6,vector<int>(4)));//三维(dp3[5][6][4])
dp.push_back(1);//尾接
dp.push_back(2);
dp.push_back(3);
dp.push_back(4);
dp.resize(6,-1);//将dp长度变成6,多出来的赋值为-1(改变dp长度)
cout<<dp.size()<<endl;
dp.pop_back();//尾删
cout<<dp.size()<<endl;
dp.clear();//清空
cout<<dp.size()<<endl;
dp.empty();//判空(1为空0为非空)
}
int main(){
int T=1;
//cin>>T;
while(T--){
_solve();
}
return 0;
}
二、栈(stack)
#include<bits/stdc++.h>
using namespace std;
//栈(stack)后进先出
void _solve(){
stack<int>s;
s.push(1);//入栈
s.push(2);
s.push(3);
s.push(4);
cout<<s.size()<<endl;
s.pop();//出栈
cout<<s.size()<<endl;
cout<<s.top()<<endl;//取栈顶
s.empty();//判空(1为空0为非空)
}
int main(){
int T=1;
//cin>>T;
while(T--){
_solve();
}
return 0;
}
三、队列(queue)
#include<bits/stdc++.h>
using namespace std;
//队列(queue)先进先出
void _solve(){
queue<int>q;
q.push(1);
q.push(2);
q.push(3);
q.push(4);
// cout<<q.front()<<endl;//输出队首
// cout<<q.back()<<endl;//输出队尾
cout<<q.size()<<endl;
q.pop();//出队
cout<<q.front()<<endl;//输出队首
cout<<q.back()<<endl;//输出队尾
cout<<q.size()<<endl;
q.empty();//判空(1为空0为非空)
}
int main(){
int T=1;
//cin>>T;
while(T--){
_solve();
}
return 0;
}
四、优先队列(二叉堆)
#include<bits/stdc++.h>
using namespace std;
//优先队列(二叉堆)
void _solve(){
priority_queue<int> pq;//大顶堆
pq.push(1);//进堆
cout<<pq.top()<<endl;//弹出堆顶元素(取最大值)
pq.push(3);
cout<<pq.top()<<endl;
pq.push(2);
cout<<pq.top()<<endl;
pq.push(4);
cout<<pq.top()<<endl;
pq.pop();//出堆
cout<<pq.top()<<endl;
cout<<endl;
priority_queue<int,vector<int>,greater<int> > _pq;//小顶堆
_pq.push(3);//进堆
cout<<_pq.top()<<endl;//弹出堆顶元素(取堆中最小值)
_pq.push(2);
cout<<_pq.top()<<endl;
_pq.push(4);
cout<<_pq.top()<<endl;
_pq.push(1);
cout<<_pq.top()<<endl;
_pq.pop();//出堆
cout<<_pq.top()<<endl;
}
int main(){
int T=1;
//cin>>T;
while(T--){
_solve();
}
return 0;
}
五、 集合(set)
#include<bits/stdc++.h>
using namespace std;
//集合(set:确定性、互异性)
void _solve(){
set<int> st;
st.insert(1);//插入
st.insert(2);
st.insert(2);
st.insert(0);
//遍历(迭代)
for(set<int>::iterator it=st.begin();it!=st.end();it++){
cout<<*it<<endl;
}
st.erase(2);//删除
if(st.find(1)!=st.end()){//st.find(1)查找1这个元素
cout<<"1Yes"<<endl;
}
if(st.find(2)!=st.end()){
cout<<"2Yes"<<endl;
}
if(st.count(1)){//st.count(1)返回1的元素个数
cout<<"1Yes"<<endl;
}
if(st.count(2)){
cout<<"2Yes"<<endl;
}
// //c++11
// for(auto &a:st){//知道st类型可以用对应的类型
// cout<<a<<endl;
// }
cout<<st.size()<<endl;
st.clear();//清空
st.empty();//判空(1为空0为非空)
}
int main(){
int T=1;
//cin>>T;
while(T--){
_solve();
}
return 0;
}
六、映射(map)
#include<bits/stdc++.h>
using namespace std;
//映射(map:互异性)
void _solve(){
//map<要存储键的类型,要存储值的类型,比较器> mp;
map<int,int> mp;
mp[2]=1;//增
mp[3]=2;
mp[0]=4;
mp[999]=111;
//遍历(迭代)
for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++){
cout<<it->first<<' '<<it->second<<endl;
}
// //c++11
// for(auto &pr:mp){
// cout<<pr.first<<' '<<pr.second<<endl;
// }
cout<<mp[2]<<endl;
cout<<mp[1]<<endl;
cout<<mp.size()<<endl;
mp[2]=2;//改
cout<<mp[2]<<endl;
if(mp.find(2)!=mp.end()){//查键的元素个数
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
mp.erase(2);//删
if(mp.find(2)!=mp.end()){//查
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
cout<<mp.count(2)<<endl;//查键的元素个数
cout<<mp.count(3)<<endl;
mp.clear();//清空
cout<<mp.empty()<<endl;//判空(1为空0为非空)
}
int main(){
int T=1;
//cin>>T;
while(T--){
_solve();
}
return 0;
}
七、字符串(string)
#include<bits/stdc++.h>
using namespace std;
//字符串(string)
void _solve(){
string s="12342156";
string _s="123.42156";
string s1="123",s2="133";
// cin>>s;
// cout<<s<<endl;
cout<<s1+s2<<endl;//字符串拼接
cout<<s.substr(3,4)<<endl;//从下标第3位起后4位的子串(4215)
cout<<s.find("342")<<endl;//查找是否存在该子串
if(s.find("342")!=string::npos){
cout<<"Yes"<<endl;
}
int _int=stoi(s);//将字符转换为int型
cout<<_int<<endl;
long long int _ll=stoll(s);//将字符转换为long long int型
cout<<_ll<<endl;
/*默认保留6位有效数字*/
float _f=stof(_s);//将字符转换为float型
cout<<_f<<endl;
double _d=stod(_s);//将字符转换为double型
cout<<_d<<endl;
long double _ld=stold(_s);//将字符转换为long double型
cout<<_ld<<endl;
int x=6254;
string sx=to_string(x);//将整形转换为字符型
cout<<sx<<endl;
}
int main(){
int T=1;
//cin>>T;
while(T--){
_solve();
}
return 0;
}
八、二元组(pair)
#include<bits/stdc++.h>
using namespace std;
//二元组(pair)
void _solve(){
//pair<第一个值的类型,第二个值的类型>
pair<int,int> p=make_pair(1,2);
pair<int,int> p1=make_pair(2,3);
pair<int,int> p2=make_pair(2,3);
cout<<p.first<<' '<<p.second<<endl;
if(p1==p2) cout<<"Yes"<<endl;
}
int main(){
int T=1;
//cin>>T;
while(T--){
_solve();
}
return 0;
}