zoukankan      html  css  js  c++  java
  • 数据结构与算法(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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    博弈论《《转》》
    HDU 2509 Be the Winner
    SORT排序。。
    HDU 356 SNim
    博弈
    KM算法。《转载》以后看。
    jmeter(28)逻辑控制器 之 交替控制器
    jmeter(30)逻辑控制器 之 Switch Controller 暂时不写!
    jmeter(29)逻辑控制器 之 吞吐量控制器
    Shell一个文件并等待完成
  • 原文地址:https://www.cnblogs.com/dnhua/p/10087954.html
Copyright © 2011-2022 走看看