亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++抽象數據類型指的是什么

發布時間:2022-01-04 00:37:11 來源:億速云 閱讀:290 作者:柒染 欄目:開發技術

本篇文章為大家展示了C++抽象數據類型指的是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

我們在學數據結構的時候,經常遇到的一個概念就是抽象數據類型(Abstract Data Type),簡稱ADT。

維基百科中的定義是:抽象數據類型是計算機科學中具有類似行為的特定類別的數據結構的數學模型,或者具有類似語義的一種或多種程序設計語言的數據類型。

從這段定義來看,非常地費解,其實我們只需要抓住核心。核心就是接口和實現的分離。我們在使用一個ADT的時候,只需要和接口進行交互,而不必關心接口中的實現細節。同樣,數據也是隱藏不可見的,也需要通過接口進行交互。

也就是說接口是數據類型唯一的交互方式,除此之外,用戶無法接觸到ADT的數據以及實現細節。

舉個例子:以棧舉例,如果我們不將棧設計成ADT,那么用戶在使用棧的時候,可能就需要自己創建一個數組來存儲棧中的數據,通過調用一些方法來實現棧的功能。但這勢必需要用戶了解棧的原理,以及數據存儲的細節。ADT會做一個良好的封裝,用戶只需要了解每個接口的功能,調用對應的接口實現自己想要的邏輯即可。

我們來看一下C++ Primer當中實現的棧的例子。

首先,我們需要知道棧一共有哪些接口,大概有如下這么幾個:

  • 創建空棧

  • 可添加數據到棧頂

  • 可從棧頂彈出數據

  • 可查看棧是否為空

  • 可查看棧是否已滿

然后,我們遵守C++中面向對象的設計思路,將它封裝在一個類當中。

首先我們來定義這個類:

#ifndef STACK__H_
#define STACK__H_

typedef unsigned long Item;

class Stack {
 private:
        enum {MAX=10};
        Item items[MAX];
        int top;
    public:
     Stack();
     bool isempty() const;
     bool isfull() const;
     bool push(const Item &item);
     bool pop(Item &item);
};
#endif

我們來看下這個定義,會發現,其中的數據都被設定成了private,也就是用戶無法直接訪問到數據。只能通過public的接口進行交互,也無須關心其中的實現細節,可以當做黑盒使用。

最后, 我們再來看下C++ Primer當中給出的實現:

#include "stack.h"

Stack::Stack() {
    top = 0;
}

bool Stack::isempty() const {
    return top == 0;
}

bool Stack::isfull() const {
    return top == MAX;
}

bool Stack::push(const Item &item) {
    if (top < MAX) {
        items[top++] = item;
        return true;
    }
    return false;
}

bool Stack::pop(Item &item) {
    if (top > 0) {
        item = items[--top];
        return true;
    }
    return false;
}

上述內容就是C++抽象數據類型指的是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

安泽县| 连城县| 三亚市| 平舆县| 盐山县| 特克斯县| 长泰县| 开化县| 明水县| 黔江区| 涿州市| 光泽县| 二连浩特市| 呼玛县| 和田县| 独山县| 清水河县| 金寨县| 即墨市| 珠海市| 从化市| 宜黄县| 如东县| 海门市| 东丽区| 道真| 东兴市| 郎溪县| 梅河口市| 伊宁县| 平乐县| 新昌县| 昌吉市| 改则县| 桦甸市| 开阳县| 修武县| 武隆县| 台东县| 托里县| 维西|