泛型程序设计
Posted fanmu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了泛型程序设计相关的知识,希望对你有一定的参考价值。
c++的核心优势是便于软件的重用:
1)面向对象的思想:继承和多态、标准类库
2)泛型程序设计 (generic programming):模板机制、标准模板库(standard template library, STL)(标准模板库就是一些常用的数据结构和算法模板的集合)
1.STL中的基本概念
容器:用于存放各种类型的数据(基本类型的变量,对象)的数据结构,是类模板
算法:用来操作容器中的元素,是函数模板
迭代器:用于依次存取容器中元素,类似于指针
2.容器
容器分三种
1)顺序容器(vector/deque/list)
vector 头文件<vector>
动态数组,在内存连续存放。随机存取能常数时间完成;尾部增删在大部分情况下是常数时间完成,这是由于动态数组申请内存都是预先申请较大内存,不够了再申请;但如果是插入或删除操作,就需要O(n)
deque 头文件<deque>
双向队列(有头尾指针),在内存连续存放。和vector的差别是两端增删在大部分情况下常数时间完成。
list 头文件<list>
双向链表,在内存不连续存放。在任何位置增删元素都需要修改前后元素的指针指向,即能常数时间完成,但存取一个元素,需要从头指针慢慢挪,即不支持随机存取。
2)关联容器(set/multiset/map/multimap)
所插入的元素需要通过相应排序规则来确定其位置。可用于查找,通常以平衡二叉树方式实现,插入和检索的时间都是O(log(N))。
3)容器适配器(stack/queue/priority_queue)
priority_queue 头文件<queue>
优先级队列,最高优先级元素总是第一个出列。
注:
1)对象被插入容器时,被插入的实际上是对象的复制品。此外,该对象所述的类还应对 == 和 < 进行重载
2)在使用容器时,需要注意某种操作的时间复杂度
3)成员函数
3.迭代器
以上是关于泛型程序设计的主要内容,如果未能解决你的问题,请参考以下文章