常用stl基础用法

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值