广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++抽象数据类型介绍
  • 712
分享到

C++抽象数据类型介绍

2024-04-02 19:04:59 712人浏览 八月长安
摘要

公众号:Coder梁(ID:Coder_LT) 我们在学数据结构的时候,经常遇到的一个概念就是抽象数据类型(Abstract Data Type),简称ADT。 维基百科中的定义是:

公众号:Coder梁(ID:Coder_LT)

我们在学数据结构的时候,经常遇到的一个概念就是抽象数据类型(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++抽象数据类型介绍的文章就介绍到这了,更多相关C++抽象数据类型内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++抽象数据类型介绍

本文链接: https://www.lsjlt.com/news/161471.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++抽象数据类型介绍
    公众号:Coder梁(ID:Coder_LT) 我们在学数据结构的时候,经常遇到的一个概念就是抽象数据类型(Abstract Data Type),简称ADT。 维基百科中的定义是:...
    99+
    2022-11-12
  • C#抽象类的用法介绍
    假设有2个类,一个类是主力球员,一个类是替补球员。 public class NormalPlayer { public int ID { get; ...
    99+
    2022-11-13
  • C/C++中抽象类详解及其作用介绍
    目录概述抽象类 vs 具体类案例抽象类的作用总结概述 抽象类 (abstract class), 是一些不用来定义对象, 而只作为基类被继承的类. 由于抽象类常用作基类, 所以通常称...
    99+
    2022-11-12
  • C++抽象数据类型指的是什么
    本篇文章为大家展示了C++抽象数据类型指的是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们在学数据结构的时候,经常遇到的一个概念就是抽象数据类型(Abstract Data Type),简称...
    99+
    2023-06-22
  • C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍
    一、概述 1、WebRequest: 对统一资源标识符 (URI) 发出请求。 这是一个 abstract 类。WebRequest的派生类:PackWebRequest、FileW...
    99+
    2022-11-13
  • 数据类型介绍
    目录 什么是数据类型?(掌握) 为何对数据分类?(掌握) 不同数据类型(掌握) 首先让我们回顾变量是什么:变量用来记录世...
    99+
    2023-01-31
    数据类型
  • C#中数据类型的转换介绍
    目录1、parse转换:将string类型转化为其他类型2、任意类型转化为string类型3、隐式转换:自动转换-->小范围到大范围自动转换4、显示转换:强制转换-->由...
    99+
    2022-11-12
  • Java中抽象类和接口介绍
    目录1、抽象类1.1 什么是抽象类?1.2 抽象类属于什么类型?1.3 抽象类怎么定义?1.4 抽象方法2、接口2.1 关于接口2.2 接口怎么定义?2.3 接口基础语法总结1、抽象...
    99+
    2022-11-12
  • C#泛型类型参数的介绍
    这篇文章主要讲解了“C#泛型类型参数的介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#泛型类型参数的介绍”吧!C# 泛型类型参数在泛型类型或方法定义中,类型参数是客户端在实例化泛型类型...
    99+
    2023-06-17
  • SQL Server数据类型介绍
    简单整理几个常用的SQL server 数据类型的描述,以便查阅。 ...
    99+
    2022-10-18
  • MySQL的数据类型介绍
    由于Mysql独有的特性和实现细节对性能的影响是很明显的,因为做好Mysql数据库的设计很关键。对于数据库设计,我们不得不提表字段的类型选择,由于Mysql支持的数据类型非常多,因此如何选择正确的数据类型对...
    99+
    2022-10-18
  • PHP5接口和抽象类的语法介绍
    这篇文章主要讲解了“PHP5接口和抽象类的语法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP5接口和抽象类的语法介绍”吧!大家对PHP5接口和PHP5抽象类的语法了解有多少呢?下面...
    99+
    2023-06-17
  • Java接口的继承与抽象类介绍
    这篇文章主要讲解了“Java接口的继承与抽象类介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java接口的继承与抽象类介绍”吧!在实施接口中,我们利用interface语法,将inter...
    99+
    2023-06-02
  • JavaScript中的数据类型介绍
    一、基本数据类型(原始值类型) 基本类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。 基本类...
    99+
    2022-11-13
  • 3、MySQL的数据类型介绍
    上一章节内容主要介绍了一些MySQL中对表和库的增删改查操作,对于上一章中对与表中字段的一些定义进行说明,本章主要介绍关于数据库类型的一些定义。一、概述:MySQL数据库中的数据大致可以分为以下几类,从而实现数据库在操作的时候对不同类型的处...
    99+
    2023-01-31
    数据类型 MySQL
  • C/C++中数据类型转换详解及其作用介绍
    目录概述不同类型数据间的转换隐式类型转换强制类型转换自己声明的类型转换转换构造函数类型转换函数案例应用概述 在日常的开发中, 我们经常会用到数据类型转换, 所以我们要对数据类型转换有...
    99+
    2022-11-12
  • C#扩展性对象模型介绍
    这篇文章主要讲解了“C#扩展性对象模型介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#扩展性对象模型介绍”吧!C#扩展性对象模型Visual Studio .NET 包含一个可编程、非...
    99+
    2023-06-17
  • python基本数据类型的介绍
    int(整型)在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-922337203685...
    99+
    2023-01-31
    数据类型 python
  • redis缓存的数据类型介绍
    这期内容当中的小编将会给大家带来有关redis缓存的数据类型介绍,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Redis缓存数据类型有5种,分别是String(字符串)、List(列表...
    99+
    2022-10-18
  • MySQL CHAR和VARCHAR数据类型介绍
    CHAR类型是固定长度的,长度范围为0到255。如果存储的值不覆盖字段长度,存储数据的其他的部分会在值的右边自动添加空格。 VARCHAR字段中的值是可变长度的字符串,长度范围为0到65535。VARC...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作