C++语法STL语法

发布时间 2023-09-01 21:11:10作者: wxzcch

常用STL结构

一些常用的STL可以帮我们直接实现数据结构,让算法更容易实现。

  • vector——向量、数组

  • pair——元组

  • queue——队列

  • stack——栈

  • priority_queue——优先队列

  • unorder_map——哈希表(相比map查找更快一些)

  • map——字典

  • set——集合

STL用法总结

STL的引入

#include<vecotr>
#include<queue>
#include<stack>
#include<priority_queue>
#include<unorder_map>
#include<set>

vector向量、数组

vector的定义

vector<int> a;
vector<long long> a;
vector<string> a;
vector<double> a;
// ......

vector常用方法

vector<int> a;
a.push_back(1);		//往vector里面放数字,相当于python的append
a.size();			//获取vector的元素个数
a.pop_back();		//删除尾元素
a[index];			//获取下表为index的元素

pair元组

pair的定义

const int N = 1e5 + 10;
pair<int, int> a[N];
pair<int, string> a[N];
// ......

pair的使用

a[index].first;		//获取下标为index的第一个元素
a[index].second;	//获取下标为index的第二个元素
// 赋值即可

queue队列

queue的定义

queue<int> q;
queue<long long> q;
queue<double> q;

queue常用方法

queue<int> q;
q.push(1);			//在队尾插入一个元素
q.pop();			//删除对头、不返回值
q.size();			//返回队列中元素个数
q.empty();			//如果为空范围true,不空返回false
q.front();			//返回对头元素

stack

stack的定义

stack<int> s;
stack<string> s;

stack常用方法

stack<int> s;
s.push();			//元素入栈
s.top();			//返回栈顶元素
s.pop();			//弹出栈顶元素
s.size();			//返回栈的长度
s.empty();			//是否为空

priority_queue优先队列,会排序

priority_queue的定义

priority_queue<int> q;

priority_queue常用方法

q.push(1);			//元素入列
q.top();			//对头元素
q.pop();			//元素出列

unorder_map哈希表——使用查找频率高,几乎O(1)!

unorder_map的定义

unorder_map<int, string> m;
// 前面的int 是 key、string 是value

unorder_map使用

unorder_map<string, int> m;
m['num1'] = 1;

string n = "cch";
int k = 123;
m[n] = k;

map字典

map的定义

unorder_map<int, string> m;
// 前面的int 是 key、string 是value

map使用

unorder_map<string, int> m;
m['num1'] = 1;

string n = "cch";
int k = 123;
m[n] = k;

set集合

set的定义

set<int> s;

set常用方法

s.begin()        //返回set容器的第一个元素

s.end()      //返回set容器的最后一个元素

s.clear()          //删除set容器中的所有的元素

s.empty()    //判断set容器是否为空

s.size()      //返回当前set容器中的元素个数