当前位置: 首页 > news >正文

STL-Library-Containers

image-20250527100202336

STL-Library-Containers

✏️ 关于专栏:专栏用于记录 prepare for the coding test


文章目录

  • STL-Library-Containers
    • 📝 常用容器
      • 🧩向量vector
        • 🧩栈stack
        • 🧩队列
        • 🧩优先队列priority_queue
        • 🧩集合set
        • 🧩映射map
    • 🌟 总结

📝 常用容器

  • 顺序容器

    • array
    • vector
    • deque
    • list
  • 关联容器

    • set
    • map
  • 无序关联容器

    • unordered_set
    • unordered_map
  • 容器适配器

    • stack
    • queue
    • priority_queue
  • 字符串

    • string
  • 对与元组

    • pair
    • tuple

🧩向量vector

构造

vector<int> arr;//构造int数组
vector<int> arr(100);//构造初始长100的int数组
vector<int> arr(100,1);//构造初始长100的int数组,初值为1
vector<vector<int>>mat(100,vector<int>());//构造初始100行,不指定列数的二维数组
vector<vector<int>>mat(100,vector<int>(100,1));//构造初始100行,初始100列的二维数组,初值为1

尾接&尾删

.push_back(元素):在vector尾接一个元素,数组长度+1
.pop_back():删除vector尾部的一个元素,数组长度-1

Others

//中括号运算符
[]
//获取长度
.size()
//清空
.clear()
//判空
.empty()
//改变长度
.resize(新长度,[默认值])
//如果是缩短,则删除多余的值
//如果是扩大,且指定了默认值,则新元素均为默认值
🧩栈stack

构造:stack<类型> stk;

进栈:.push(元素);

出栈:.pop();

取栈顶:.top();

查看大小:.size()

清空:.clear()

判空:.empty()

不可访问内部元素!

🧩队列

构造:queue<类型> que;

进队:.push(元素);

出队:.pop();

取队首:.front()

取队尾:.back()

查看大小:.size()

清空:.clear()

判空:.empty()

不可访问内部元素!

🧩优先队列priority_queue

构造:priority_queue<类型,容器,比较器> pque;

类型:要存储的数据类型

容器:存储数据的底层容器,默认为vector<类型>

比较器:比较大小使用的比较器,默认为less<类型>,可自定义

priority_queue<int> maxHeap;
priority_queue<int,vector<int>,greater<int>> minHeap;

进堆:.push(元素)

出堆:.pop()

取堆顶:.top()

查看大小:.size()

判空:.empty()

只可访问堆顶,其它元素都无法读取到。

🧩集合set

set<类型,比较器> st;

类型:要存储的数据类型。

比较器:比较大小使用的比较器,默认为less<类型>,可自定义

set<int> st1;//存储int的集合(从小到大)
set<int,greater<int>> st2;//存储int的集合

遍历

for(set<int>::iterator it = st.begin();it!=st.end();it++){cout<<*it<<endl;
}
for(auto &ele : st){cout<<ele<<endl;
}

插入元素:.insert(元素)

删除元素:.erase(元素)

查找元素:.find(元素)

判断元素是否存在.count(元素)

🌟set虽说可遍历,但仅可使用迭代器进行遍历,它不存在下标这一概念,无法通过下标访问到数据。

🌟set的迭代器取到的元素是只读的(因为是const迭代器),不可修改其值,如果要改,需要先erase再insert。

🌟set迭代器不能像vector一样相减得到下标。

🧩映射map

map<键类型,值类型,比较器> mp;

键类型:要储存键的数据类型

值类型:要存储值的数据类型

比较器:键比较大小使用的比较器,默认为less<类型>,可自定义

map<int,int> mp1;//int->int的映射(键从小到大)
map<int,int,greater<int>> mp2;//int->int的映射(键从大到小)

遍历

for(map<int,int>::iterator it = mp.begin();it != mp.end();it++){cout<<it->first<<' '<<it->second<<endl;
}
for(auto &pr : mp)cout<<pr.first<<' '<<pr.second<<endl;
for(auto &[key,val] : mp){cout<<key<<' '<<val<<endl;
}

增/改/查 []

查元素(返回迭代器).find(元素)

删除元素 .erase(元素)

判断元素是否存在 .count(元素)

查看大小/清空/判空 .size() .clear .empty()

🌟如果使用中括号访问map的对应的键不存在,那么会新增这个键,并且值为默认值,因此中括号会影响键的存在性。

map<char,int> mp;
cout<<mp.count('a')<<endl;//0
mp['a'];
cout<<mp.count('a')<<endl;//1
cout<<mp['a']<<endl;//0

不可使用迭代器计算下标。

map的迭代器不能像vector一样相减得到下标。

🌟 总结

❤️ 如果对你有帮助,别忘了点赞、收藏支持一下,我将持续更新更多高质量刷题笔记!
📘 点击查看 👉 算法笔记专栏:Prepare for the Coding Test

相关文章:

  • Acrobat Reader 无法在 Windows 11及10 中打开的5种修复方法
  • 岛津Sonialvision X-ray X射线高压发生器控制台
  • RuoYi前后端分离框架集成Jasypt实现配置信息加密
  • C语言创意编程:用趣味实例玩转基础语法(2)
  • Redis工作原理解析
  • 学者观察 | Web3.0的技术革新与挑战——北京理工大学教授沈蒙
  • BERT和GPT语言模型的核心差异
  • How API Gateways handle raw TCP packets
  • 【深度学习-Day 18】从SGD到Adam:深度学习优化器进阶指南与实战选择
  • CentOS 7.0重置root密码
  • 【Marp】自定义主题 - box01
  • 【第1章 基础知识】1.2 Canvas 的绘图环境
  • iPaaS集成平台如何赋能智能体搭建
  • 【递归、搜索与回溯算法】专题一 递归
  • 创意编程:用Python打造粒子爱心烟花秀
  • JavaScript面试题之箭头函数详解
  • 使用 CHB Renamer 高效批量重命名文件扩展名
  • 【NLP基础知识系列课程-Tokenizer的前世今生第二课】NLP 中的 Tokenizer 技术发展史
  • go tour泛型
  • 【力扣】面试题 01.04. 回文排列
  • 邯郸网站建设最新报价/网站快速优化排名app
  • 网站开发建设费用包括那些/深圳外贸网站建设
  • 国外html响应式网站模板/美容美发培训职业学校
  • 网站后台数据库备份怎么做/推广一单500
  • 武汉网站开发/今日头条权重查询
  • 东莞网站建设网站推广/网站seo快速排名优化的软件