AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 其它
    • 题解
    • 分享
    • 商店
    • 问答
  • 吐槽
  • 登录/注册

C++STL常用函数操作笔记整理

作者: 作者的头像   哥德巴赫 ,  2023-01-25 15:38:11 ,  所有人可见 ,  阅读 59


3


4

栈

//1.头文件
#include <stack>

//2.声明
stack<int> s;       //声明栈内元素都是int类型一个栈s

//3.操作
s.push(1);      //在栈s顶插入元素1
s.pop();        //删除栈s的顶部元素
s.top();        //获取栈顶元素的值
s.size();       //求栈的大小
s.empty();      //判断栈是否为空

队列

//1.头文件
#include <queue>

//2.声明
queue<int> q;       //声明队列内元素都是int类型一个队列q

//3.操作
q.push(1);      //在队尾顶插入元素1
q.pop();        //删除队尾元素
q.front();      //获取队头元素的值
q.back();       //获取队尾元素的值
q.size();       //求队列大小
q.empty();      //判断队列是否为空

优先队列

//1.头文件
#include <queue>

//2.声明--默认为大顶堆
priority_queue<int> q;                  //默认大顶堆
priority_queue<int, vector<int>, greater<int> > q;  //指定堆的类型为小顶堆
priority_queue<int, vector<int>, less<int> > q;     //指定堆的类型为大顶堆

//3.操作
q.push(1);      //在堆内插入元素1且仍保持堆的结构
q.pop();        //弹出堆顶元素
q.top();        //获取堆顶元素的值

pair

//1.头文件
#include <utility>

//2.声明
pair<string, int> p;        //声明第一个元素为string类型,第二个元素为int型的对

//3.操作
p.first;            //访问p的第1个元素
p.second;           //访问p的第2个元素

//pair支持比较操作,默认以first为第一关键字,second为第二关键字

vector容器

//1.头文件
#include <vector>

//2.声明
vector<int> vec;        //声明元素int型vector对象,该对象大小为0,容器内无任何元素
vector<int> vec(100);       //声明含有100个元素,初值为0的int型vector对象
vector<int> vec(100,2);     //声明含有100个元素,初值为2的int型vector对象

//3.操作
vec.push_back(1);           //在向量vec末尾插入元素1
vec.insert(vec.begin()+i,1);        //在第i个元素后面插入1(在下标为i的地方插入1,剩余元素后移)
vec.erase(vec.begin()+2);       //删除第三个元素(删除下标为2的元素)
vec.erase(vec.begin()+i,vec.begin()+j); //删除下标i~j的元素
vec.size();             //求向量大小
vec.clear();                //清空向量

//4.访问vector中的元素
vec[i];                 //使用下标访问元素(同数组)

//使用迭代器访问vector中的元素
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
    cout<<*it<<endl;`

注:vector中的元素是结构体时,要将结构体定义为全局的,否则会出错。

map

map的本质是一棵红黑树

//1.头文件
#include <map>

//2.声明
map<string, int> m;     //声明关键字为string型,对应的值int型的对

//3.操作
m["aaa"]=1;         //字符串"aaa"的值为1

unordered_map

unordered_map的本质是哈希表

//1.头文件
#include <unordered_map>

//2.声明
unordered_map<string, int> m;       //声明关键字为string型,对应的值int型的对

//3.操作
m["aaa"]=1;         //字符串"aaa"的值为1
m.count("aaa");         //查询m中是否存在值为“aaa”的元素

字符串string

//1.头文件
#include <string>

//2.声明
string str;         //声明一个字符串str

//3.操作
str.insert(2,"abc");        //在下标为2的位置之前插入"abc"
str.erase(2);           //删除从下标2开始的之后的所有元素
str.erase(2,1);         //删除下标从2开始的一个的元素
str.find('A');          //从头查找字符'A',返回'A'在str中首次成功的位置,若失败,则返回-1

其它常用辅助函数

//头文件
#include <algorithm>

//1.sort排序
sort(a.begin(), a.end());

//2.reverse翻转数组
reverse(a.begin(), a.end());

//头文件
#include <cstring>

//3.memset数组初始化函数,将某一块内存全部填充为指定的值
memset(f, -1, sizeof(f));

0 评论

你确定删除吗?
1024
x

© 2018-2023 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息