- 分享
♂小♂核♂弹♂的♂珍♂藏♂资♂料♂
- @ 2023-7-13 16:20:10
C++ STL
vector
//STL:向量vector
int a[100];
//vector定义
vector<int> vi;//一维向量
// vector<int> vi[100];//二维向量
// //vector赋初值
// vector<int> ve{1, 2, 3, 4, 5};//用花括号赋初值
// vector<int> vs(5); //创建5个元素,值为0
// vector<int> vd(100,2) //创建100个元素,初始化为2
int main(){
//vector访问
//1.通过下标访问
//2.通过迭代器访问
//迭代器:是一种指针,指向容器中的某个位置
vector<int>::iterator it;
//以上,创建一个int类型vector容器的迭代器,叫it
//it是个指针
vi.begin();//返回第一个元素的地址
vi.end();//返回最后一个元素下一个元素的地址
for (it = vi.begin(); it != vi.end();it++){
cout << *it << " ";
}
//vector常用方法
vi.push_back(x); //将x插入到vector的末尾
vi.pop_back(x); //将vector最后一项弹出(删除)
vi.size(); //返回vector的大小
vi.clear(); //清空vector
vi.insert(it, x); //在it所指向的位置(it是指针),插入x
//vi.insert(vi.begin()+4, 5);
vi.insert(it, first, end);
//指,在it位置之前,插入另一个容器(不一定是vector)的
//first到end位置,左闭右开
//vi.insert(vi.end(), ve.bengin(), ve.end());
vi.erase(it); //删除it位置的元素
vi.erase(first, end);//删除[first,end)范围的元素
DFS
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int a[100][100],b[100][100];
int startx,starty,endx,endy;
int n,m;
int v=999999;
void dfs(int x,int y,step){
int tx,ty;
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
if(x==endx&&y==endy){
if(step=v){
v=step;
return;
}
}
for(int k=0;k<=3;k++){
tx=x+dx[k]
ty=y+dy[k]
if(tx<1||tx>n||ty<1||ty>>m) continue;
if(a[tx][ty]==0&&b[tx][ty]==0){
b[tx][ty]=1;
dfs(tx,ty,step+1);
b[tx][ty]=0;
}
}
return;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
cin>>startx>>starty;
cin>>endx>>endy;
b[startx][starty]=1;
dfs(startx,starty,0);
cout<<"从"<<startx<<","<<starty<<"到"<<endx<<","<<endy<<endl;
cout<<"最短路径为"<<v;
}
集合set
集合的好处:可以自动排序,且去重
首先导入头文件****
定义:set<数据类型(int,……)> 集合名;** **// 默认从小到大排序
从大到小排序的定义方式:set<数据类型(int,……),greater****> 集合名;
集合操作
集合名.insert(变量名)** **// 将变量插入集合中
集合名.erase(变量名)** **// 删除集合中的变量元素,如果返回1则删除成功,如果返回0则集合中不存在这个变量元素
集合名.clear()** **// 清空集合
集合名.empty();** **// 判断集合是否为空,是返回1,否则返回0
集合名.size();** **// 返回集合中元素的个数
集合迭代器
set**::iterator 迭代器名; **创建迭代器
for(迭代器名 = 集合名.begin();迭代器名 != 集合名.end();迭代器名 ++){
cout << *迭代器名 << ' ';
}
在变量面前加*号,会输出变量的地址
在地址面前加*号,会输出地址的变量
刺杀名单:
TimSort: LV1919810
动态规划: LV114514
可爱的数据结构们: LV1145
贪心:LV810
MSF:LV??????
KALI: LV1145141919810
C++STL:LV1919
lefeng: LV1145141919810????????(NO!!!!)
xhd等级:114
1 条评论
-
Chi'h Chingjui @ 2023-7-17 14:23:496
- 1