2.5 stack容器2.5.1 stack 基本概念概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为 --- 入栈 push栈中弹出数据称为 --- 出栈 pop生活中的栈:子弹进弹夹出弹夹的过程2.5.2 stack 常用接口功能描述:栈容器常用的对外接口构
• deque容器的迭代器也是支持随机访问的 • 底层数据结构:动态开辟的二维数组
2.0 vector容器2.1.1 vector基本概念功能:vector数据结构和数组非常相似,也称为矢量,向量vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间vector容器的迭代器是支持随机访问(也就是使用中括号[]下标访问)的迭代器,且vector容器的随机访问
• 散列表虽然比较占空间,但是它的增删查的都很快,趋近于O(1); • 红黑树也是一颗二叉排序树,所以入红黑树的数据都是经过排序的,它的增删查时间复杂度都是O() ,对数时间,比哈希表慢
set/multiset: * set/multiset属于关联式容器,底层结构是用二叉树实现。 set和multiset区别: * set不允许容器中有重复的元素 * multiset允许容器中有重复的元素 map/multimap: * map中所有元素都是pair * pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) * 所有元素都会根据元素的键值自动排序 * map/multimap属于关联式容器,底层结构是用二叉树实现。 优点: * 可以根据key值快速找到value值 map和multimap区别: - map不允许容器中有重复key值元素 - multimap允许容器中有重复key值元素
string 类内部封装了很多成员方法 例如:查找find,拷贝copy,删除delete 替换replace,插入insert string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责(RAII)
概念: 重载函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质: 函数对象(仿函数)是一个类,不是一个函数
STL常用泛型算法
链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的。 • 链表的组成:链表由一系列结点组成 • 结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域
• STL(Standard Template Library,标准模板库) • STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator) • 容器和算法之间通过迭代器进行无缝连接。 • STL 几乎所有的代码都采用了模板类或者模板函数
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号