C++STL概述1
2022/2/7 22:44:43
本文主要是介绍C++STL概述1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
STL基本概念
-
容器:可容纳各种数据类型的通用数据结构,是类模板
-
迭代器:可用于依次存取容器的元素,类似于指针
-
算法:用于操作容器中的元素的函数模板
-
sort()来对一个vector中的数据进行排序
-
find()来搜索一个list中的对象
-
算法本身与他们操作的数据的类型无关,因此它们可以在从简单数组到高度复杂容器的任何数据结构上使用。
容器概述
顺序容器:
概述
容器并非排序的,元素插入位置同元素的值无关
vector——动态一维数组
头文件
元素在内存连续存放。随机存取任何元素都能在常数时间完成
在尾端增删元素具有较佳的性能(大部分是常数时间)
deque——双向队列
头文件
元素在内存连续存放。随机存取任何元素都能在常数时间完成(相比vector比较慢)
在两端增删元素具有较佳的性能(大部分是常数时间)
list——双向链表
头文件
元素在内存不连续存放,不支持随机存放
在任何位置增删元素都能在常数时间里完成
关联容器:
概述
- 元素是排序的
- 插入任何元素,都按相应的排序规则来确定位置
- 在查找时具有较好性能
- 通常以平衡二叉树的方式实现,插入和检索都是log(n)
set/multiset
头文件
set即集合。set中不允许相同元素,multiset中允许
map/multimap
头文件
map和set的不同在于map中存放的元素有且只有两个成员变量,一个为first,一个为second
map根据first值对元素进行从小到大排序,并可快速地根据first来检索元素
map与multimap的不同在于,map不允许相同的first值的元素
容器适配器:
stack(栈)
头文件
栈。是项的有限序列,并满足序列中被删除、检索和修改的项只能是最近插入序列的项(栈顶的项)
即后进先出
queue(单向队列)
头文件
队列。插入只可以在尾部进行;
删除、检索和修改允许从头部进行
即先进先出
priority_queue(优先级队列)
头文件
优先级队列:队列里面维持某种有序
最高优先级元素总是第一个出列
顺序容器与关联容器中共有的成员函数
-
begin():返回指向容器中第一个元素的迭代器
-
end():返回指向容器中最后一个元素后面位置的迭代器
-
rbegin():返回指向容器中最后一个元素的迭代器
-
rend():返回指向容器第一个元素前面位置的迭代器
-
erase():从容器中删除一个或者几个元素
-
clear():清空容器
顺序容器常用成员函数
-
front():返回容器中第一个元素的引用
-
back():返回容器中最后一个元素的引用
-
push_back():在容器末尾增加新元素
-
pop_back():删除容器末尾的元素
-
erase():删除迭代器指向的元素(可能会使迭代器失效)
或者删除一个区间,返回被删除元素后面元素的迭代器
这篇关于C++STL概述1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)
- 2025-01-03停止思考数据管道,开始构建数据平台:介绍Analytics Engineering Framework
- 2025-01-03如果 Azure-Samples/aks-store-demo 使用了 Score 会怎样?
- 2025-01-03Apache Flink概述:实时数据处理的利器
- 2025-01-01使用 SVN合并操作时,怎么解决冲突的情况?-icode9专业技术文章分享
- 2025-01-01告别Anaconda?试试这些替代品吧