数据结构与算法
相信大家都听过一句话:程序 = 数据结构 + 算法。
我们在写程序时,实际上就是在对给定的数据进行一系列的操作,然后将处理的结果返回给需要接收的地方,这里的地方可以指程序本身,也可以指返回给用户,你懂我意思的。
数据结构就是各种具有相似性质或属性的数据的一种组织关系(逻辑的关系和物理的存储方式),无非就那几种,集合
、线性结构
、树状结构
和图状结构或网状结构
。而我们现实生活中遇到的绝大部分问题,都可以将我们需要处理的数据抽象组织成上述几种结构。
算法就是处理数据的各种操作步骤的集合,常见的操作有对具有某种结构的数据集中的数据进行排序
,或者 查找
数据集中某个指定的数据等。
这些经典的数据结构和算法都是相当成熟的,而我们实际程序开发中又经常会用到相关的数据结构或算法,如果我们每个人都去实现自己的数据结构或者算法,先不考虑我们编写的效率如何,单就实现这些功能来说就是一个浪费时间浪费人力的工作,这样软件开发就会出现在不同的地点不同的人在相同的时间做着重复而无效率保证的工作。
软件设计的目标以及金科玉律就是:复用。
STL
对于使用 C++ 为语言工具做开发的人而言,幸运的是,有那么一帮大神帮我们实现了一个叫 STL(Standard Template Library) 的东西,也就是标准模板库,是泛型编程的一个很好的实例或实践。为什么要用模板?因为模板可以通用,你想处理什么类型的数据都可以,包括内置类型或者用户自定义类型等,这么一本万利的东西,你说要不要用?
STL 为我们实现了一系列的数据结构以及一些典型的算法,而且效率肯定是有保证的,毕竟是大神设计的,所以我们大可肆无忌惮的使用 STL 为我们提供的东西,而不是重复造轮子(关键是造出来的没别人的好)。
STL 就是一种高复用的软件产品。
容器(containers)
当然,STL 并不是简单的为我们