• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2022-12-07 00:52 Aet 隐藏边栏 |   抢沙发  8 
文章评分 3 次,平均分 5.0

概述

  1. 适配容器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。

stack<T>

  1. 是一个封装了deque<T>容器的适配器类模板,默认实现是一个后入先出的压入栈

queue<T>

  1. 是一个封装了deque<T>容器的适配器类模板,默认实现的是一个先入先出的队列

priority_queue<T>

  1. 是一个封装了vector<T>容器的适配器类模板,默认实现是一个会对元素排序,从而保证最大元素总在队列最前面的队列

stacck

  1. 第一个参数是储存对象的类型
  2. 第二个参数是底层容器的类型

  1. 默认是deque,也支持其他支持back,pop_back,empty,size这些操作的容器

top

  1. 返回一个栈顶元素的引用

push(cosnt T& obj)

  1. 可以将对象副本压入栈顶

push(T&& obj)

  1. 以移动对象的方式将对象压入栈顶

pop

  1. 弹出栈顶元素

size

empty

emplace

  1. 用传入的参数调用构造函数,在栈顶生成对象

swap

queue

  1. 只能访问queue<T>容器适配器的第一个元素和最后一个元素
  2. 只能在容器的末尾添加新元素,只能从头部移除元素

  1. 默认是deque,也支持其他支持front,back,push_back,push_front,empty,size这些操作的容器

front

  1. 返回queue中第一个元素的引用
    1. 如果queue是常量,就返回一个常引用
    2. 如果queue为空,返回值是未定义的

back

  1. 返回queue中第一个元素的引用
    1. 如果queue是常量,就返回一个常引用
    2. 如果queue为空,返回值是未定义的

push(const T& obj)

  1. 在尾部添加一个元素的副本

push(T&& obj)

  1. 已移动的方式在尾部添加元素

pop

  1. 删除队列中的第一个元素

size

empty

emplace

  1. 用传入的参数,在队列的尾部构造出一个对象

swap

priority_queue

  1. priority_queue容器定义了一个元素有序排列的队列。默认队列的头部的元素的优先级最高
  2. 因为是一个队列,只能访问第一个元素,这也意味着优先级最高的元素总是第一个被处理

  1. priority_queue默认是有一个vector容器,函数对象类型less<T>是一个默认的排序断言。

  1. 在底层,一个有priority_queue创建了一个堆。

push(const T& obj)

  1. 将对象的副本放到容器的适当位置,这通常包含一个排序操作

push(T&& obj)

  1. 以移动的方式将对象的副本放到容器的适当位置,这通常包含一个排序操作

emplace

  1. 通过传入的参数构在适当的位置构造出一个对象,这通常包含一个排序操作

top

  1. 返回优先级队列中的第一个元素的引用

pop

  1. 移除第一个元素

size

empty

swap

  1. 堆(heaps)不是容器,而是一种特别的数据组织方式。
  2. 堆一般用来保存序列容器。

大顶堆

  1. 每个父节点总是大于或等于子节点

小顶堆

  1. 每个父节点总是小于或等于子节点

make_heap

push_back

  1. 在序列末尾添加元素,然后需要用push_heap恢复堆的排序

push_heap

  1. 会认为最后一个元素是新元素,为了保持堆结构,会重新排序

pop_heap

  1. 将第一个元素移到最后,并保证剩下的元素任然是一个堆。然后需要用pop_back移除最后一个元素

is_heap

  1. 如果元素段是堆,返回true

is_heap_until

  1. 返回一个迭代器,指向第一个不在堆内的元素

容器中保存指针的好处

  1. 在容器中保持指针需要复制指针而不是它所指向的对象,通常来说复制指针要比复制对象快
  2. 在容器中保持指针可以得到多态性
    1. 存放元素基类指针的容器也可以保存其派生类的指针
  3. 对指针容器的内容进行排序的速度要比对象排序快
  4. 保存智能指针要不保存原生指针安全,因为在对象不再被引用时,自由存储区的对象会被自动删除。这样就不会产生内存泄漏。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享