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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    prev()方法使用的注意点
    JS 获取图片的高度
    渐变色
    JS获取时间
    监听鼠标上下滚动事件
    几种常见的边框样式
    左侧导航背景颜色随机变化
    apache开启gzip压缩
    dedecms在linux上安装提示没权限解决办法
    阿里云centos7.3安装lamp环境
  • 原文地址:https://www.cnblogs.com/dnhua/p/10087954.html
Copyright © 2011-2022 走看看