STL小结

vector常用的函数

屏幕快照 2017-04-28 下午3.43.10

  • begin()

  • end()

  • size()

  • empty()

  • capacity()

  • front()

  • back()

  • push_back()

  • pop_back()

  • erase(iterator position)
    屏幕快照 2017-04-28 下午3.44.28

  • erase(iterator first, iterator last) //迭代器last指向的那个元素是不清除的
    屏幕快照 2017-04-28 下午3.39.46

  • insert(position,n,x)
    屏幕快照 2017-04-28 下午3.59.58
    屏幕快照 2017-04-28 下午4.02.29

屏幕快照 2017-04-28 下午4.02.57

  • resize()
  • clear()
  • 提供随机存取迭代器

list容器

  • STL中list是一个环状双向链表,插入和接合操作都不会造成原有的list失效。而vector的插入操作可能使原有的迭代器全部失效。 屏幕快照 2017-04-28 下午4.21.44

如上图所示,如果让指针node指向刻意置于尾端的一个空白节点,node便能符合STL对于 前闭后开区间 的要求,成为last迭代器。

  • list 提供的是双向迭代器

  • begin(): 返回第一个元素的迭代器(*node)->next

  • end(): 直接返回node

  • size()

  • empty()
    屏幕快照 2017-04-28 下午4.31.27

  • insert: 新插入节点将位于哨兵节点(标示出插入点)所指节点的前方,这是STL对“插入操作” 的标准规范。
    屏幕快照 2017-04-28 下午5.09.18

  • push_front()

  • push_back()

  • pop_front()

  • pop_back()

  • unique() :移除数值相同的连续元素,只有 “连续而相同" 的元素,才会被移除只剩一个

  • remove(const T & value): 将数值为value的所有元素移除

  • erase(iterator)
    屏幕快照 2017-04-28 下午5.17.29

  • clear(): 清除所有的元素

  • transfer(position, first, last): list内部提供了一个所谓的迁移操作(transfer):将某连续范围内的元素迁移到某个特点的位置之前。
    屏幕快照 2017-04-28 下午5.26.58
    注意迁移区间是 半闭半开区间 ,这个transfer不是公开的接口,公开的接口是space

  • space() : space将某连续范围的元素从一个list移到另一个(同一个)list的某个点
    屏幕快照 2017-04-28 下午5.36.08

  • merge()

  • sort()

  • resverse()


deque容器操作

vector是一种单向开口的连续线性空间,deque是一种双向开口的连续线性空间。双向开口是指在头尾两端分别做元素的插入和删除操作。

屏幕快照 2017-04-28 下午5.42.29
屏幕快照 2017-04-28 下午5.43.35

deque与vector的区别

  • deque允许于常量时间内对头端进行元素的插入或移除操作

  • deque没有容量的概念
    屏幕快照 2017-04-28 下午5.48.15

屏幕快照 2017-04-28 下午5.51.59

屏幕快照 2017-04-28 下午5.54.12


stack

修改某物接口,形成另一种风貌的性质 称为配接器。


屏幕快照 2017-04-28 下午8.41.49

  • pop()
  • push(const value_type & x)
  • top(): 返回栈顶元素
- stack不提供迭代器 屏幕快照 2017-04-28 下午8.49.11

SGI 以deque作为缺省情况下的stack底部结构


queue

屏幕快照 2017-04-28 下午8.51.34

  • 入队操作称为push(const value_type & x)

  • 出队操作称为pop()

  • front()取队首元素

  • back() 取队尾元素

屏幕快照 2017-04-28 下午8.57.29


set

标准的STL关联式容器分为set和map两大类,以及他们的衍生体multiset(多键集合)以及multimap(多键隐射表)。这些容器的底层都是以红黑树完成。RB-tree也是一个独立的容器,但并不开放给外界使用。




posted @ 2017-05-01 10:02  I呆呆  阅读(301)  评论(0编辑  收藏  举报