c++day7

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

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

#include <iostream>

using namespace std;
template <typename T>
class Myvector
{
private:
    T *start;//起始指针
    T *end;//数组末尾指针
    T *last;//数组有效长度的尾指针
public:
    //定义无参构造
    Myvector(){
        start=new T[2];
        last=start;
        end=start+1;
    }
    //定义有参构造
    Myvector(int num,const T &val)
    {
        start=new T[num+1];
        last=start;
        end=start+num;
        for(int i=0;i<num;++i)
        {
            start[i]=val;
            last++;
        }

    }
    //定义拷贝构造函数
    Myvector(const Myvector<T> *other)
    {
        this->start=new T[other->end -other->first+1];
        this->last=other->last;
        this->end=other->end;
        for(int i=0;i<other->end-other->start;++i)
        {
            this->first[i]=other->first[i];
        }
    }
    //定义拷贝赋值函数
    Myvector &operator=(const Myvector<T>*other){
        if(this!=other)
        {
            delete []start;
            this->first=new T[other->end-other->start+1];
            this->last=other->last;
            this->end=other->end;
            for(int i=0;i<other->end-other->start;i++)
            {
                this->start[i]=other->start[i];
            }
        }
        return  *this;
    }
    //析构函数
    ~Myvector()
    {
        delete []start;
        start=nullptr;
        last=nullptr;
        end=nullptr;
    }
    //at()函数
    T &at(int pos){
        if(pos>end-start)
        {
            cout<<"越界了"<<endl;
        }
        return start[pos];
    }
    //判空
    bool empty(){
        if(last==start)
        {
            return 1;
        }else{return  0;}
    }
    //front()函数
    T &front(){
        return  *start;
    }
    //back()函数
    T &back(){
        return  *(end-1);
    }
    //size()函数
    int size()
    {
        return  last-start;
    }
    //二倍扩容
    void erkr(){
        if(end-start==1||last==start)
        {


            int len=end-start;
            start=new T[len*2];
        }
        last+=(end-start)-1;
        return;
    }
    //push_back()
    void push_back(const T &val)
    {
        if(last==end)//容器满了
        {
            erkr();
        }
        *last=val;
        last++;

    }
    //pop_back()
    void pop_back()//容器是空的
    {
        if(empty())
        {
            cout<<"容器空了"<<endl;
        }
        last--;
    }

    //begin()返回第一个元素的迭代器
    T*begin()const{
        return start;
    }
    //end()
    T*pend(){
        return last;
    }

};
int main()
{
    Myvector<int>m(2,5);
    cout<<m.at(1)<<endl;
    cout<<m.size()<<endl;//大小
    m.push_back(6);
    cout<<m.size()<<endl;//大小
    Myvector<int>n(m);
    n.pop_back();
    cout<<m.at(1)<<endl;




    return 0;
}

c++day7,c++,java,开发语言

思维导图

c++day7,c++,java,开发语言文章来源地址https://www.toymoban.com/news/detail-712591.html

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

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

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

相关文章

  • 自学day7 数组

    对象中可以通过键值对存储多个数据,且数据的类型是没有限制的,所以通常会存储一个商品的信息或一个人的信息: 但对象在存储同类型数据的时候比较困难,例如,存储一个班级所以人的姓名: 这种存储方式我们没有办法通过一个人的姓名获取到这个人的编号,也没有

    2024年02月05日
    浏览(40)
  • arm:day7

    1.软中断处理    

    2024年02月12日
    浏览(41)
  • 渗透测试学习day7

    Task1 问题:除了SSH和HTTP,这个盒子上还托管了什么服务? nmap扫一下 Task2

    2024年02月05日
    浏览(41)
  • 蓝桥杯打卡Day7

    文章目录 阶乘的末尾0 整除问题 本题思路: 由于本题需要求阶乘的末尾0,由于我们知道2*5=10可以得到一个0,那么我们就可以找出2的数和5的数,但是由于是阶乘,所以5的数量肯定是小于2的数量,因此我们只需要知道5的数量即可,这里只需要算含有5的次幂的数目即可。  本

    2024年02月09日
    浏览(38)
  • 代码随想录day7

    目录 第454题.四数相加II 思路: 383. 赎金信 思路: 第15题. 三数之和 思路: 力扣题目链接 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 = i, j, k, l n nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0   示例 1: 输入:nums1 = [1,2

    2024年02月10日
    浏览(41)
  • 【暑期每日一练】 day7

    目录 选择题 (1) 解析:  (2) 解析:  (3) 解析:  (4) 解析:  (5) 解析:  编程题 题一 描述 输入描述: 输出描述: 示例 解析  代码实现  题二 描述 示例  提示 解析  代码实现  总结   1、以下对C语言函数的有关描述中,正确的有【多选】( ) A: 在C语言中

    2024年02月15日
    浏览(44)
  • ARM day7 (串口协议)

    键盘输入一个字符\\\'a\\\',串口工具显示\\\'b\\\' uart4.h uart4.c main.c 键盘输入一个字符串,串口工具回显输入的字符串 uart4.h uart4.c main.c  

    2024年02月12日
    浏览(40)
  • 【优选算法题练习】day7

    35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 69. x 的平方根 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回

    2024年02月16日
    浏览(59)
  • dp算法篇Day7

     \\\"抱紧你的我,比国王富有~\\\"          从题目来看还是很容易理解的,就是找寻数组中构成差值相等的子序列。                        等差数列?这似乎和我们之前做的一个题类似。但是,那个题是给出了差值,但是这道题却没有。因此,这两道题的解法就很不一样

    2024年02月16日
    浏览(34)
  • Vue [Day7] 综合案例

    json-server是什么,应用场景 JSON Server是一个开源的Node.js库,用于快速搭建RESTful API的模拟服务器。它可以帮助开发者快速创建一个具有CRUD(创建、读取、更新、删除)功能的API服务器,而无需编写后端代码或连接到真实的数据库。 JSON Server的主要作用和应用场景包括: 模拟数

    2024年02月13日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包