成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

抽象數據類型確實有點抽象

大數據 數據分析
抽象數據類型英文名叫( Abstract Data Type ),這里有兩個關鍵詞,一個叫“數據類型”,一個叫“抽象”,它們分別是什么意思呢?首先說什么是數據類型呢?

[[382826]]

 本文轉載自微信公眾號「見賢思編程」,作者泰斗賢若如 。轉載本文請聯系見賢思編程公眾號。

抽象數據類型

抽象數據類型英文名叫( Abstract Data Type ),這里有兩個關鍵詞,一個叫“數據類型”,一個叫“抽象”,它們分別是什么意思呢?首先說什么是數據類型呢?

數據類型,它包含了兩個東西,一個是“數據對象集”,就是我們說的“是什么東西”,第二個是“數據集合相關聯的操作集”,就上我在上一篇中說的,我們不能單純講怎么去處理圖書,我們是要對這些圖書進行操作的。

這兩件事情:圖書的擺放,對圖書的操作,是緊密結合在一起的。

這兩個東西在C語言里是獨立處理的,但是在一些面向對象的語言里邊,比如C++、Java,你就會發現,它們很好的為數據類型專門設計了一種機制,就是一個“類”,把這個數據集跟它相關的操作集封裝在一個類里面。

那再說什么是抽象呢?

抽象,抽象的意思就是“不具體”,就是說,描述數據類型的方法是不依賴于具體的實現的,對一個數據類型的描述,它跟

  • 存放數據的機器無關
  • 跟數據存儲的物理結構無關
  • 實現操作的算法和編程語言皆無關

總體來說,我們只描述數據對象集和相關的操作集"是什么",我們不關心“它是怎么做到的”這個問題。

可能到現在一些沒有基礎的朋友看起來還是很抽象,沒關系,我再舉個例子,可能幫助你更好的理解抽象數據類型到底是個什么東西,這個例子是關于“矩陣”的抽象數據類型的定義。

圖片首先我們要給這個抽象數據類型一個名稱叫“矩陣”,然后我們要描述一下它的數據對象集,一個 NM 的矩陣,是由 NM 個矩陣的元素構成的,我們把這個元素描述成一個三元組 a , i , j ,其中 a 是這個矩陣元素的值,同時我們還需要知道這個矩陣元素在矩陣里面所處的位置,就是它的行號 i 和列號 j ,就這樣描述了一個數據的對象集,相關聯的操作集有很多很多(如下圖)

我們來看一下,為什么這個就叫做“抽象”的表示呢?

首先我們來看,在描述數據對象集的時候,說a是矩陣元素的值,那這個值是float?還是double?還是int?我們在這個抽象數據類型中描述是不關心的。

相應地,當需要對它的元素值進行操作的時候,我們返回的也是ElementType,是一個通用的元素類型,我在實現這個矩陣相關的所有函數的時候,我在頭上寫一個define,你需要什么,我就把它define(定義)成什么樣子。

這樣的話,你實現的這些函數是跟“你那個矩陣元素到底是哪種類型”是沒有關系的,哪種類型都是可以運算的。

這就避免了你對int實現了一遍,下一次矩陣變成 double 類型的,結果你又對 double ……難道重新寫一遍嗎?當然你說我可以直接用一個 replace (替換),我把所有的int替換成 double 。

呃……這個你要注意,有些地方的int真的就是 int ,你不能換成 double ,所以可能會出錯,總的來說呢,就是如果你自己一個一個地去替換這個元素的類型的話,會很麻煩,而抽象一下就是有這個好處,這是一個好處。

另外一個呢,像這個矩陣,我們只是說這是一個 M*N 的矩陣,至于在程序里面它是怎樣一個存法?我們是用二維數組去存它 ?還是一維數組 ?還是用鏈表 ?這個我們在抽象數據類型定義的時候,都是不關心的。

我不管它是怎么實現的,我只是說:我要實現的是一個矩陣 。再比如說上面圖片中的 Add() 函數 ,如果它們可以相加的話,我要返回它們的和,那我可沒說,在我算這個矩陣加法的時候,到底是先按行加呢 ?還是先按列加呢 ?我到底是用什么語言去實現這個函數呢 ?統統不管,這就是所謂的抽象。

此篇完

到這抽象數據類型就說完了,其實這一篇就是對數據結構的另一種描述,我想看到這的話朋友們應該對數據結構有個清晰的認識了吧。

 

責任編輯:武曉燕 來源: 見賢思編程
相關推薦

2021-12-14 10:12:58

C++抽象數據

2011-07-21 14:45:13

java

2024-11-07 12:20:31

LinuxC語言數據類型

2016-10-23 23:00:51

2018-07-12 11:44:38

數據庫MySQL變量分類

2010-03-04 09:40:04

Java接口抽象類

2022-04-06 09:10:03

抽象類型普通類型Swift

2011-06-28 10:55:20

C#接口抽象類

2021-08-09 15:06:10

數字貨幣區塊鏈貨幣

2009-07-14 13:49:29

原型

2019-08-12 11:40:48

數據庫SQLite3數據類型

2014-01-05 17:08:09

PostgreSQL數據類型

2022-09-22 11:36:31

隊列Python

2016-08-18 14:13:55

JavaScript基本數據引用數據

2010-07-22 17:57:40

2018-01-10 09:03:30

大數據人工智能服務器

2021-03-18 09:24:11

DrogonC++框架

2021-05-25 05:51:55

云抽象IT需求公共云

2021-09-29 13:53:17

抽象工廠模式

2020-09-14 17:26:48

抽象工廠模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: xxx视频| 天天拍天天色 | 国产亚洲黄色片 | 国产午夜影院 | 亚洲免费av一区 | 国产激情小视频 | 天堂久久久久久久 | 中文字幕在线视频精品 | 欧产日产国产精品视频 | 成人午夜av| 免费在线看黄视频 | 毛片视频免费观看 | 久久久www成人免费无遮挡大片 | 日韩午夜在线观看 | 午夜视频在线免费观看 | 久久r久久| 精品乱码久久久久 | 国产高清免费视频 | 中文字幕av第一页 | 狠狠骚 | 日日网| 亚洲福利精品 | 欧美国产一区二区 | 国产美女特级嫩嫩嫩bbb片 | 欧美激情精品久久久久久 | 密室大逃脱第六季大神版在线观看 | 91福利网址 | 国产高清免费视频 | 成人免费一区二区三区视频网站 | 国产美女久久久 | 久久久高清 | 久久久蜜桃一区二区人 | 日韩成人在线一区 | 久久se精品一区精品二区 | av中文在线播放 | 拍真实国产伦偷精品 | 欧美日韩在线免费观看 | 国产一区二区在线免费观看 | 成人久草 | 精品国产一区二区国模嫣然 | 99精品久久 |