文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++抽象数据类型指的是什么

2023-06-22 07:51

关注

本篇文章为大家展示了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++抽象数据类型指的是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯