首页 > 其他分享 >重载自增++运算符预算符完成数组扩容

重载自增++运算符预算符完成数组扩容

时间:2024-03-19 09:31:59浏览次数:17  
标签:index 自增 ++ 运算符 int DynamicArray array size

今天突发奇想,我们平时的++运算符基本都只能自增数字,那我能不能实现一个当用户自增数组时也能完成数组增加一项呢(假设你不会使用c++的变长数组或者vector!)下面就是我的实现方法,各位大佬多多指教哦!比如说gyf大佬和yzs大佬以及lxb大佬?

// 重载++运算符扩容数组

#include <iostream>
class DynamicArray
{
private:
    int size;
    int *array;

public:
    DynamicArray(int size = 1);
    void resize(int newSize);
    int &operator[](int index);
    DynamicArray &operator++()
    {
        resize(size + 1);
        return *this;
    }
    int getsize(DynamicArray &array);
};
DynamicArray::DynamicArray(int size)
{
    this->size = size;
    array = new int[size];
}
void DynamicArray::resize(int newSize)
{
    int *newArray = new int[newSize];
    for (int index = 0; index < newSize; index++)
    {
        newArray[index] = array[index];
    }
    delete[] array;
    array = newArray;
    size = newSize;
}

int &DynamicArray::operator[](int index)
{
    return array[index];
}
int DynamicArray::getsize(DynamicArray &array)
{
    return array.size;
}
int main()
{
    int size = 0;
    std::cout << "Please input your size:";
    std::cin >> size;
    DynamicArray array(size);
    for (int index = 0; index < size; index++)
    {
        std::cin >> array[index];
    }
    ++array;
    std::cout << "Please input your " << array.getsize(array) << "-th element:";
    std::cin >> array[array.getsize(array) - 1];
    for (int index = 0; index < array.getsize(array); index++)
    {
        std::cout << index + 1 << "-th element:" << array[index] << std::endl;
    }
    return 0;
}

标签:index,自增,++,运算符,int,DynamicArray,array,size
From: https://blog.csdn.net/yangguanghhh/article/details/136752527

相关文章

  • C++类实现顺序表
    环境:vscodesequencelist.h#ifndefSEQUENCELIST_H#defineSEQUENCELIST_H#defineMAXSIZE20//最大存储容量typedefintElemType;classSqList{public:SqList();//SqList(ElemTypeelems[],intn);//有参构造器~SqLis......
  • 字符串压缩(C++)
    字符串压缩:    例如:aaaabbbccx-->4a3b2cx,单个字符不压缩。基本思想:前后两两字符作比较,若相同则计数器加一,若不同则直接输出。程序代码:#include<iostream>intmain(){ strings; intcount=1; cin>>s; s=s+"";//加上空格是为了方便最后一个字符的比较 in......
  • 【c++】string类---标准库(STL)中的string类
    主页:醋溜马桶圈-CSDN博客专栏:c++_醋溜马桶圈的博客-CSDN博客gitee:mnxcc(mnxcc)-Gitee.com目录1.STL(标准库)1.1什么是STL1.2STL的版本1.3 STL的六大组件1.4 STL的重要性1.5 如何学习STL6.STL的缺陷2.为什么要学习string类2.1C语言中的字符串2.2OJ中......
  • C++进阶之路---手撕“红黑树”
    顾得泉:个人主页个人专栏:《Linux操作系统》 《C++从入门到精通》  《LeedCode刷题》键盘敲烂,年薪百万!一、红黑树的概念与性质1.概念       红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的......
  • c++类&对象(学习笔记)
    c++类&对象类,用户定义的类型,类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员,函数在一个类中被称为类的成员。c++类的定义定义一个类,本质上是定义一个数据类型的蓝图这书籍上并没有任何数据,但他定义了类的名称意味着什么,他定义了类......
  • 亲子游戏【华为OD机试JAVA&Python&C++&JS题解】
    题目描述宝宝和妈妈参加亲子游戏,在一个二维矩阵(NN)的格子地图上,宝宝和妈妈抽签决定各自的位置,地图上每个格子有不同的糖果数量,部分格子有障碍物。游戏规则是妈妈必须在最短的时间(每个单位时间只能走一步)到达宝宝的位置,路上的所有糖果都可以拿走,不能走障碍物的格子,只能上下......
  • C++看程序写结果:调用一次Line类构造函数,执行几次Point类复制构造函数?
    C++看程序写结果:调用一次Line类构造函数,执行几次Point类复制构造函数?#include<iostream>#include<cmath>usingnamespacestd;classPoint{//Point类定义public:Point(intxx=0,intyy=0){x=xx;y=yy;}Point(Point&p);......
  • 【CSP考点回顾】C++标准库加速输入输出
    C++标准库加速输入输出ios_base::sync_with_stdio(false);:取消C++标准库(iostream)与C标准库(stdio)之间的同步。默认情况下,为了保证C++的cin、cout与C的stdin、stdout能够互相交换数据,它们之间会进行同步。这样做虽然安全,但会减慢IO操作的速度,因为每次IO操作都需要进行同步。......
  • JavaScript学习笔记3: 数据类型,运算符,类型转换
    JS数据类型,运算符,类型转换利用typeof获取数据类型数字3的类型<script>console.log("3的类型:"+typeof3);</script>浮点数<script>console.log("3.14的类型:"+typeof3.14);</script>字符串<script>console.log("'......
  • C++演奏起风了
    代码如下:#include<iostream>#include<Windows.h>//pragma预处理指令的作用是设定编译器的状态或者指示编译器完成一些特定的动作,//表示链接winmm.lib这个库,winmm.lib(多媒体)#pragmacomment(lib,"winmm.lib")usingnamespacestd;//Scale音阶enumScale{ Rest=......