1 STL部件【容器、分配器、算法、迭代器、适配器、仿函数】容器简介【序列容器、关联容器、无序容器】

13 篇文章 2 订阅

STL六大部件:

  • 容器 container:存储数据,用户不必关心数据在内存的存储形式,只需要知道怎么用容器接口
  • 分配器 allocator:帮助容器在内存规划位置
  • 算法 algorithm:与数据分离,能够执行某种操作
  • 迭代器 iterator:连接容器(数据)和算法(操作)的桥梁,好像一种泛化指针
  • 适配器 adapter:进行转换,可以针对容器、仿函数、迭代器
  • 仿函数 Funtor:作用像一个函数

标准库规定,容器的头尾是前闭后开,即[ )类型

C++11新规定的遍历方式

for (decl : coll) {
    statement
}
//decl是declare,声明一个变量
//coll是collection,表示一个元素集合/容器

//示例1:遍历集合中的元素
for (int i :{2,3,4,5}) {
    cout << i << endl;
}
//示例2:传值输出集合中的元素
for (auto e : vec) {
    cout << e << endl;
}
//示例3:传址修改集合中的元素
for (auto& e : vec) {
    e *= 3;
}

容器分类

序列式容器

array:由C++本身的数组包装得到。大小固定,不能改变

vector:能够自动扩充的数组,只能在尾部扩充

deque:双向队列,可以在头尾扩充

list:双向链表

forward-list:单向链表

关联式容器

有key和value,因为能够根据key查找value,所以关联式容器十分适合需要大量查找的数据

set/multiset:底层红黑树。key就是value,即红黑树的每个节点上只存储一个key值,该key值就=value值。

set表示存放元素的key不能重复,multiset表示存放元素的key可以重复

map/multimap:底层红黑树。key和value分开存放,即红黑树的每个节点上既要存储key值,还要存储value值。

map表示存放元素的key不能重复,multimap表示存放元素的key可以重复

以红黑树为底层的关联式容器,key值都是有序存放的,因为红黑树本身就是有序的

无序式容器

其实也是一种关联式容器,但是独立了出来

unordered set/multiset:底层哈希表。

unordered map/multimap:底层哈希表。

以哈希表为底层的无序式容器,key值都是无序存放的,因为哈希表本身就是无序的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值