数据结构与算法(1)- 数据结构概览

声明:虽然本系列博客与具体的编程语言无关。但是本文作者对c++相对比较熟悉,其次是java,所以难免会有视角上的偏差。举例也大多是和这两门语言相关。

今天先来看看有哪些常见的数据结构(C++ STL视角,其他应该也大同小异吧。哈哈,我猜的!)。所以之后的内容大多从STL出发,然后顺便对比下java中对应的数据结构。作为一名合格的软件开发人员,我们有时不需要深入对这些结构进行深度了解(原子级了解),但是至少我们得知道这些结构的基本原理、构成以及代价(时间空间代价)。如果你想对这些结构深度了解,建议阅读《STL源码剖析》这本书,java的话可以直接读相关的源码就行了。这个系列博客只会分析这些结构的基本原理、代价以及应用时注意的细节,而不会用代码实现。那么废话不多说,先来个表:

 


C++ STL里将上表出现的这些重要的数据结构称为容器。容器也就是装东西之物,数据结构乃是装数据之物。这么理解数据结构其实很简单。说白了数据结构就是构造了一块空间,然后制定了/构造了一些规则来更方便的管理和操作这些数据。那么根据“数据在容器中的排列”特性,这些数据结构可以分为序列式(sequence)和关联式(associative)两种。

所谓序列式容器,其中的元素都可序(ordered),但未必有序(sorted)。  --侯捷

所谓关联式容器,观念上类似关联式数据库(实际上则简单许多):每笔数据(每个元素)都有一个键值(key)和一个实值(value)。       --侯捷

所以这下子我们就清楚啦,表1左侧的数据都是可序的,右侧的数据数据都是由键值对构成的。那么他们到底有啥区别呢,又有什么性能上的差异呢,空间占用又是啥情况呢?这些问题就随着我们的博客一步一步来揭开咯。

小秘密:下一篇将讲解序列容器中的vector。另外可以透漏个小秘密,根据数据组织的不同序列式容器大致可以分为三种哦!一是基于数组的,一是基于列表,再是基于树结构的哟。

See you next time. Happy Coding!!!

我的GitHub​​​​​​​
---------------------
作者:dnhua
来源:CSDN
原文:https://blog.csdn.net/dnhua/article/details/84658982
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2018-12-08 15:57  dnhua  阅读(199)  评论(0编辑  收藏  举报