vector 动态数组
常用于树的构建
常用于二维数组过大 不会爆
一维vector
#include<iostream>
#include<vector>
using namespace std;
vector<int>z;//一维vector
signed main()
{
z.push_back(1); //插入
z.push_back(2);
z.push_back(10);
z.clear();//清除vector里面的内容
for (auto it : z) //遍历vector
{
cout << it << " ";
}
return 0;
}
二维vector
#include<iostream>
#include<vector>
using namespace std;
vector<int>z[1000010];
signed main()
{
z[2].push_back(1);
z[2].push_back(2);
z[2].push_back(10);
for (auto it : z[2])
{
cout << it << " ";
}
return 0;
}
stack 栈
#include<iostream>
#include<vector>
#include<stack>
using namespace std;
stack<int>z;
signed main()
{
z.push(1);//插入
z.push(2);
cout << z.top() << endl; //输出最顶端元素
z.pop();//弹出最后进入的元素
cout << z.size()<<endl;//输出stack长度
if (!z.empty()) cout << 1;//不是空的输出1
else cout << 0;//是空的输出2
return 0;
}
##queue 单向队列
同stack
deque 双向队列
#include<iostream>
#include<vector>
#include<stack>
#include<deque>
using namespace std;
deque<int>z;
signed main()
{
z.push_back(1);
z.push_front(3);
z.pop_back();
z.pop_front();
z.size();
z.empty();
return 0;
}
map unordered
#include<iostream>
#include<vector>
#include<stack>
#include<deque>
#include<map>
#include<unordered_map>
using namespace std;
map<int, int>z;//带排序效果 排键 值跟键走
unordered_map<int, int>zz; //不带排序的效果
signed main()
{
z[2] = 3;
z[3] = 4;
z[1] = 2;
for (auto it : z) cout << it.first << " " <<it.second << endl;
// 键的值 值的值
zz[2] = 3;
zz[3] = 4;
zz[1] = 2;
for (auto it : zz) cout << it.first << " " << it.second << endl;
// 键的值 值的值
return 0;
}
set
特性 不重复性 从小到大性
#include<iostream>
#include<vector>
#include<stack>
#include<deque>
#include<map>
#include<set>
#include<unordered_map>
using namespace std;
set<int>z;
signed main()
{
z.insert(2);
z.insert(1);
z.insert(2);
z.insert(29);
for (auto it : z)cout << it << " ";
return 0;
}
pair 常搭配vector构造树
#include<iostream>
#include<vector>
#include<stack>
#include<deque>
#include<map>
#include<set>
#include<unordered_map>
using namespace std;
vector<pair<int, int>>z[1000010];
signed main()
{
z[2].push_back({ 3,14 }); //树的子节点 树的权值
z[2].push_back({ 4,12 });
z[2].push_back({ 6,10 });
for (auto it : z[2]) cout << it.first << " " << it.second << endl;
return 0;
}