c++ / day06

news2024/9/24 21:24:39

1. 利用模板类完成顺序表(两天时间,今天至少写出大致框架)

代码

//implement template in sqlist
#include <iostream>
#include <cstring>

#define MAXSIZE 100

using namespace std;

template <typename T>
class Sqlist
{
    unsigned int len = 0;
    T *ptr_data=NULL;

public:
    Sqlist():ptr_data(new T [MAXSIZE])
    {
         cout << "Sqlist init" <<endl;
        init();
    }
    ~Sqlist()
    {
        cout << "Sqlist destructor" <<endl;
        delete[] ptr_data;
    }

    int push(T element); // append an element at the end
    T at(unsigned int index); //get element at index postion
    int init(); //initilize sqlist

};

template <typename T>
int Sqlist<T>::init()
{
    if (NULL == ptr_data) //why ther is a warning?
    {
        cout << "ptr_data is NULL" <<endl;
        return  -1;
    }
    memset(ptr_data, 0, sizeof(T[MAXSIZE]));

    return 0;
}

template <typename T>
int Sqlist<T>::push(T element)
{
    //is full
    if(len == MAXSIZE)
    {
        cout << "sqlist is full" <<endl;
        return -1;
    }
    *(ptr_data + len) = element;
    len++;
    return 0;
}

template <typename T>
T Sqlist<T>::at(unsigned index)
{
    if(index < 0 || len > MAXSIZE)
    {
        cout << "index is out of range" <<endl;
        return NULL; //why ther is a warning?
    }

    return *(ptr_data + index);
}




int main()
{
    Sqlist<int> list;

    for(int i=0; i<10; i++)
    {
        list.push(i*i);
    }

    for(unsigned int i=0; i<10; i++)
    {
        cout << "list.at(" << i << ")" <<list.at(i) <<endl;
    }


    cout << "--The end--" << endl;
    return 0;
}

运行结果

2. 整理思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1352997.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【普中开发板】基于51单片机音乐盒LCD1602显示( proteus仿真+程序+设计报告+讲解视频)

【普中开发板】基于51单片机音乐盒LCD1602显示( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;P08 1. 主要功能&#xff1a; 基于51单片机AT89C51/52&#…

环境准备-VMware安装

照顾到很多人不是很会环境搭建,我这里会将搭建的步骤讲的细致点 第一步,VMware下载。目的是通过VMware搭建Linux服务器,因为大家大部分还是Windows的电脑,我们先下载虚拟机搭建一个Linux系统的服务器 下载完成之后,点击安装,如下: 点击“下一步” 勾选“我接受许可协议…

app store里面的构建版本在线上传

开发苹果ios应用&#xff0c;无论是用原生开发、用hbuilderx开发还是用其他h5框架开发的app&#xff0c;都需要将打包好的ipa文件上传到app store。 在上架app store的过程中&#xff0c;我们会遇到下图的这样一个问题&#xff1a; 就是它要求我们上传一个构建版本&#xff0c…

IDEA断点调试

IDEA断点调试 断点调试是一种在程序执行过程中暂停执行并逐步检查代码状态的方法。它允许开发者在程序运行到特定位置时暂停执行&#xff0c;查看变量的值、执行过程和调用栈等信息&#xff0c;从而更好地理解代码的运行情况和解决问题。可以帮助我们查看java底层源代码的执行…

分布微服软件体系快速云端架构

1 概述 分布微服软件体系云端架构平台&#xff0c;以主流的NACOS服务器作为注册配置中心&#xff0c;采用主流的Gradle框架&#xff0c;内嵌Tomcat10以上版本&#xff0c;用于快速构造各类基于JDK17以上的信息应用系统的分布式微服务软件体系架构&#xff0c;可以适用关系型SQ…

图像识别原理

图像识别是计算机视觉领域中的一个重要任务&#xff0c;其目标是使计算机系统能够理解和解释图像中的信息。以下是图像识别的基本原理&#xff1a; 1. 数据采集&#xff1a;首先&#xff0c;需要获取图像数据。这可以通过摄像头、传感器、扫描仪等设备来实现。图像可以是静态的…

在Linux中以后台静默运行Java应用程序

在Linux系统上运行Java应用程序时&#xff0c;有时我们希望将其设置为后台运行&#xff0c;而关闭终端窗口时不会影响进程的执行。在本文中&#xff0c;我们将介绍几种实现这一目标的方法。 1. 使用nohup命令 nohup是一个用于在后台运行进程的命令&#xff0c;而且关闭终端窗…

8868体育助力赫塔菲 格林伍德渐入佳境

西甲赫塔菲俱乐部是8868体育合作球队之一。近日&#xff0c;赫塔费在西甲联赛3-3战平马竞&#xff0c;赛后赫塔费主帅博达拉斯称赞了格林伍德。格林伍德在本场比赛中虽然没有收获进球或助攻&#xff0c;但他表现出色&#xff0c;赛后获得8分评价。 在比赛中&#xff0c;格林伍德…

依赖注入实现原理

依赖注入实现原理 一、Autowire 流程图&#xff1a; Autowire的后置处理器类是AutowiredAnnotationBeanPostProcessor&#xff0c;在启动时会执行这里面的方法 步骤一&#xff1a;寻找注入点 在创建一个Bean的过程中&#xff0c;Spring会利用AutowiredAnnotationBeanPostPro…

单片机原理及应用:独立式键盘控制LED与多功能按键识别

今天来介绍另一个外设——按键与LED的配合工作&#xff0c;与开关不同&#xff0c;按键需要注意消除抖动带来的影响&#xff0c;代码逻辑也会更复杂一写&#xff0c;下面先为大家介绍独立式键盘的相关知识。 单片机的独立式键盘指的是一种不依赖于计算机或其他外部设备的键盘输…

数据结构:堆的三部曲(二)top K问题

堆的应用&#xff08;一&#xff09;top K问题 一.top k问题的应用本质解析二.top K问题使用案例——从100亿整型的文件中找出前5个最大值1.建堆1.1过程分析1.2过程图模拟1.3向上调整算法代码1.4建堆代码 2.处理文件中剩余剩余元素2.1过程分析2.2过程图示例2.3向下调整算法代码…

百度百科词条创建多久可以通过?

一个优质的百度百科词条&#xff0c;能提升个人或企业的品牌形象。因此&#xff0c;越来越多的人希望创建自己的百度百科词条&#xff0c;那么&#xff0c;创建一个百度百科词条到底需要多久才能通过审核呢&#xff1f;接下来伯乐网络传媒就来给大家分享一下。 一、百度百科词条…

AI计算,为什么要用GPU?

今天这篇文章&#xff0c;我们继续来聊聊芯片。 在之前的文章里&#xff0c;小枣君说过&#xff0c;行业里通常会把半导体芯片分为数字芯片和模拟芯片。其中&#xff0c;数字芯片的市场规模占比较大&#xff0c;达到70%左右。 数字芯片&#xff0c;还可以进一步细分&#xff0…

灰度发布及声明式资源管理(yaml文件)

一、三种常见的项目发布方式 1&#xff09;蓝绿发布 2&#xff09;灰度发布【常用】 3&#xff09;滚动发布 应用程序升级&#xff0c;面临最大的问题是新旧业务之间的切换 立项-定稿-需求发布-开发-测试-发布&#xff0c;测试上线后&#xff0c;再完美也会有问题&#xff0c;为…

【Mybatis】深入学习MyBatis:高级特性与Spring整合

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; Mybatis ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 高级特性 1 一级缓存和二级缓存 一级缓存 二级缓存 2 延迟加载 5 整合Spring 1 MyBatis-Spring模块 2 事务管理 结…

C#基础:字段的初始化、继承

一、字段的初始化 class Test {static int Main(string[] args){var list new List<Calculate>();//1.Calculate中加入abvar calculate new Calculate { a 2, b 3 };//2.Calculate中加入Value列表calculate.Values.Add(new Value { id 1, value 6 });calculate.Va…

计算机组成原理-期末复习

目录 第一章——计算机系统概述 一、数字计算机的主要组成结构 二、指令的形式 三、控制器的基本任务 四、指令流和数据流 五、适配器与输入/输出设备 七、计算机的系统软件 八、C 语言的转换层次图 九、计算机系统的层次结构图 第二章——运算方法和运算器 一、 数据格式…

MySQL之表的记录操作

前言 存数据不是目的&#xff0c;目的是能够将存起来的数据取出来或者查出来&#xff0c;并且能够对数据进行增删改查操作&#xff0c;本文将详细介绍表中记录的增删改查操作。对记录的操作属于DML数据库操作语言&#xff0c;可以通过SQL实现对数据的操作&#xff0c;包括实现向…

爬虫入门与urllibrequests

前情摘要 一、web请求全过程剖析 我们浏览器在输入完网址到我们看到网页的整体内容, 这个过程中究竟发生了些什么? 我们看一下一个浏览器请求的全过程 接下来就是一个比较重要的事情了. 所有的数据都在页面源代码里么? 非也~ 这里要介绍一个新的概念 那就是页面渲染数据的…

爬取涛声网音频

代码展现&#xff1a; 代码详情&#xff1a; import requests import re import os filename 声音// if not os.path.exists(filename): os.mkdir(filename) def down_load(page): for page in range(page): page page1 url https://www.tosound.…