码迷,mamicode.com
首页 > 其他好文 > 详细

泛型程序设计

时间:2019-04-08 10:40:36      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:适配器   位置   迭代器   lib   set   时间复杂度   multi   程序设计   部分   

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

 

泛型程序设计

标签:适配器   位置   迭代器   lib   set   时间复杂度   multi   程序设计   部分   

原文地址:https://www.cnblogs.com/fanmu/p/10668941.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!