Re: [問題] 問一下有關ADT
※ 引述《bigbite (我愛陶吉吉)》之銘言:
: 究竟array算不算一種ADT呢??
: 雖然array為一群相同資料結構的元素,但是indexing卻是一種抽象化的動作,
: 還是說array只是單純的指一群資料的集合呢??
: 謝謝~~
在 general concept 上不是,
它只是一種 data representation,
屬於 implement 的一種手段。
ADT 要求 spec 跟 implement 是獨立的,
譬如今天你開了一個 stack 的 spec,
描述了需要哪些 objects 和 operations (這兩項也是 ADT 定義要求),
你可以用 array (以及一些 ints 變數) 當 data representation,
以及對應的 operations 如 push()、pop() 等實作方式,
也可以用 linked list (以及一些 ints 變數) 當 data representation,
以及對應的 push()、pop() 等 operations 的另一套實作方式。
至於為什麼在 general concept 上不是,
這是因為需要設定一個底限,
如果 array 是 ADT,
因為沒有比它更基礎的 data representation 名稱,
就算 spec 訂出來也還是要拿它本身來實作自己,
所以不會這樣歸類。
有一些 languages or libraries 會故意根據 array 的 spec,
做一個也叫做 array 或 Array 的 class 出來,
這樣的命名其實並不是很好,
為了避免混淆大部分會改名叫 vector,
這是因為通常在這個 class 之外,
還會存在一個也叫做 array 的基礎語言設施。
PS. 上上段的 int 後面加上 s 通常表「泛整數型別」的簡稱。
--
Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage: https://it.muds.net/~uranus
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.220.28
※ 編輯: tinlans 來自: 61.230.220.28 (02/03 03:52)
推
02/03 21:05, , 1F
02/03 21:05, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章