9.14 C++作业

这篇具有很好参考价值的文章主要介绍了9.14 C++作业。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

仿照vector手动实现自己的myVector,最主要实现二倍扩容功能

#include <iostream>


using namespace std;


template <typename T>
class Myvector
{
    T *data;    //存储数据的数组
    int len;      //当前数组的长度
    int mycapa;   //容纳数据的总容量

public:
    //构造函数
    Myvector():data(NULL),len(0),mycapa(0){cout<<"无参构造"<<endl;}
    Myvector(int n, T a)
    {
        data =new T[n];
        len = n;
        mycapa = n;
        for(int i=0;i<n;i++)
        {
            data[i]=a;
        }
        cout<<"有参构造"<<endl;

    }


    //判空
    bool my_empty()
    {
        if(0 == len)
        {
            return 0;
        }
        return 1;
    }

    //判满
    bool my_full()
    {
        if(len == mycapa)
        {
            return 0;
        }
        return 1;
    }

    //在末尾插入一个元素
    int mypop_back(T a)
    {
        if(0 == mycapa)
        {
            mycapa = 1;
            data = new T[1];
        }
        else if(len+1 > mycapa)        //如果数组长度大于最大容量,最大容量二倍扩容
        {
            mycapa = 2*len;
            int *p = new T[mycapa];
            for(int i=0; i<len; i++)
            {
                p[i] = data[i];
            }
            delete []data;
            data = p;
        }
        data[len] = a;
        len++;
    }

    //任意插入
    void my_insert(int pos, T a)
    {
        if(0 == mycapa)
        {
            mycapa = 1;
            data = new T[1];
            data[0] = a;
        }
        else if(len+1 > mycapa)
        {
            mycapa = 2*len;
            int *p = new T[mycapa];
            for(int i=0; i<pos; i++)
            {
                p[i] = data[i];
            }
            p[pos] = a;
            for(int i=pos; i<len; i++)
            {
                p[i+1] = data[i];
            }
            delete []data;
            data = p;
        }
        else
        {
            for(int i=len-1; i>=pos; i--){
                data[i+1] = data[i];
            }
            data[pos] = a;
        }
        len++;
    }

    //移除最后一个元素
    void mypop_back()
    {
        len--;
        cout<<"移除最后一个元素成功"<<endl;
    }

    //删除指定位置元素
    void my_erase(int pos)
    {
        if(my_empty() && pos>len)
        {
            cout<<"删除失败"<<endl;
        }
        for(int i=pos; i<len; i++)
        {
            this->data[i-1] = this->data[i];
        }
        len--;
        cout<<"删除指定位置元素成功"<<endl;
    }

    //展示
    void my_show()
    {
        cout<<"展示元素";
        for(int i=0; i<len; i++)
        {
            cout<<data[i];
            cout<<" ";
        }
        cout<<endl;
    }

    //返回能容纳的最大容量
    void my_capacity()
    {
        cout<<"最大容量为"<<mycapa<<endl;
    }

    //返回指定位置元素
    void my_at(int pos)
    {
        cout<<"第"<<pos<<"个元素是"<<data[pos]<<endl;
    }

    //清空所有元素
    int my_clear()
    {
        cout<<"已全部清空"<<endl;
        return len=0;
    }


};


using namespace std;

int main()
{
    Myvector<int> m(4,6);   //有参构造创建了4个元素,每个元素都是6
    m.my_show();

    m.mypop_back(7);      //尾插
    m.mypop_back(8);
    m.my_show();
    m.my_capacity();      //返回最大容量,此时为8

    cout<<"***************************************"<<endl;

    m.my_insert(5,9);     //任意位置插入元素
    m.my_show();

    cout<<"***************************************"<<endl;

    m.my_erase(5);        //任意位置删除元素
    m.my_show();

    cout<<"***************************************"<<endl;

    m.mypop_back();       //移除最后一个元素
    m.my_show();

    cout<<"***************************************"<<endl;

    m.my_at(2);

    m.my_clear();         //清空
    m.my_show();



    return 0;
}

9.14 C++作业,c++文章来源地址https://www.toymoban.com/news/detail-732795.html

到了这里,关于9.14 C++作业的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • C语言假期作业 DAY 14

    A: 比较两个字符的大小 B: 计算s所指字符串占用内存字节的个数 C: 计算s所指字符串的长度 D: 将s所指字符串复制到字符串t中 答案解析 正确答案: B 循环在 *t 为 0 时停止,同时 t++ , t 最后会停在字符串结束的 \\\'\\0\\\' 之后的一个位置, t 作为尾部指针减去头部指针就是整个字符

    2024年02月14日
    浏览(12)
  • 【探索 Kubernetes|作业管理篇 系列 14】StatefulSet 存储状态

    【探索 Kubernetes|作业管理篇 系列 14】StatefulSet 存储状态

    大家好,我是秋意零。 在上一篇中,我们讲解了 StatefulSet 的拓扑状态;我们发现,它的拓扑状态,就是顺序启动/删除、Pod 名称+编号命名、将 Pod 名称设为 Hostname 名称、通过 Service 无头服务的 DNS 记录访问。 今天,就来看看 StatefulSet 的存储状态。 最近搞了一个扣扣群,旨在

    2024年02月11日
    浏览(13)
  • flink1.14.5使用CDH6.3.2的yarn提交作业

    flink1.14.5使用CDH6.3.2的yarn提交作业

    使用CDH6.3.2安装了hadoop集群,但是CDH不支持flink的安装,网上有CDH集成flink的文章,大都比较麻烦;但其实我们只需要把flink的作业提交到yarn集群即可,接下来以CDH yarn为基础,flink on yarn模式的配置步骤。 一、部署flink 1、下载解压 官方下载地址:Downloads | Apache Flink 注意:CD

    2024年01月16日
    浏览(13)
  • 山东大学计算机科学与技术学院程序设计思维与实践作业 week14-动态规划(4)

    山东大学计算机科学与技术学院程序设计思维与实践作业 week14-动态规划(4)

    山东大学计算机科学与技术学院程序设计思维与实践作业 山大程序设计思维与实践作业 sdu程序设计思维与实践 山东大学程序设计思维实践作业H14 山大程序设计思维实践作业H14 山东大学程序设计思维与实践 week14-动态规划(4) 相关资料:GitHub 题目描述 给出一棵树,求树的

    2024年02月09日
    浏览(47)
  • 12.8 作业 C++

    12.8 作业 C++

    使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为\\\"admin\\\",密码是否为\\\"123456\\\",如果账号密码匹配成功,则输出“登录成

    2024年02月04日
    浏览(8)
  • 12.11 C++ 作业

    12.11 C++ 作业

    完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮

    2024年02月05日
    浏览(23)
  • 清明作业 c++

    清明作业 c++

    1.封装一个类,实现对一个数求累和阶乘质数  2.封装两个类,实现字符串交错输出    3. 输入字符串,将字母和数字分别存入两个不同的类的对象,然后输出。

    2024年04月11日
    浏览(3)
  • C++作业4

    1303 - 冷饮的价格(1) 题目描述 小明去冷饮店买冰激凌,如果买10个以上或者10个,2元/个,10个以下,2.2元/个,请从键盘读 入小明的购买数量,计算小明应付的价格! 输入 一个整数,代表小明购买的冰激凌的数量(n=100) 输出 小明应付的金额,金额保留1位小数! 样例 输

    2024年02月16日
    浏览(2)
  • C++编程作业-------小数运算

    题目描述 暑假来了,天气特别热,花花到冷饮店来买冷饮;已知雪糕2.5元/支,碎碎冰1.5元/支,花花买了 x支雪糕和y支碎碎冰,老板说今天有优惠,可以有1支雪糕免费,请问花花应该付给老板多少钱? 输入 两个整数x和y,分别代表了雪糕和碎碎冰的购买数量。 输出 一个小数

    2024年02月12日
    浏览(10)
  • UE5.1.1 C++从0开始(15.作业4个人作业分享)

    UE5.1.1 C++从0开始(15.作业4个人作业分享)

    教程链接:https://www.bilibili.com/video/BV1nU4y1X7iQ 好吧这个作业应该是之前写的,但是我发现我没写,后面我又回去自己写了一遍再看代码,感觉上大差不差,各位可以看着我的和老师的还有自己的对比下。 SBTService_CheckHealth.h SBTService_CheckHealth.cpp SBTTask_HealSelf.h SBTTask_HealSelf.cpp 行

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包