泛型程序设计

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.迭代器

 

以上是关于泛型程序设计的主要内容,如果未能解决你的问题,请参考以下文章

泛型程序设计---泛型方法的定义

(十七)泛型程序设计

基础知识(12)- 泛型程序设计

(十七)泛型程序设计

泛型及java中的泛型

Java核心技术-泛型程序设计