C++自写整型一维数组功能

简介: C++自写整型一维数组功能

MyArr.h


#pragma once
#include <iostream>
using namespace std;
class MyArray
{
public:
  MyArray();                       //默认构造函数
  explicit MyArray(int capacity);  //有参构造函数,可自己指定容量初始化
  MyArray(const MyArray& array);   //拷贝构造
  void Insert_Date(int pos, int val);  //根据位置添加元素
  int Get_Data(int pos);            //获得指定位置的数据
  int Get_Index(int val);           //获取元素的索引,从左到右
  void Push_Back(int val);          //尾插法
  void Pop_Back();                //尾删法
  int Get_Size();                 //获得长度
  int Get_Capacity();             //获取容量
  int Get_Max();                 //获取最大值
  int Get_Min();                 //获取最小值
  void Reverse();                //反转
  int Get_Back();            //获取最后一个元素
  ~MyArray();                      //析构函数,释放数组空间
private:
  int mCapacity;                   //容量
  int nSize;                       //当前数组中元素的个数
  int* pAddress;                   //数组首地址
};


MyArr.cpp


#include "MyArr.h"
//默认构造函数
MyArray::MyArray()
{
  cout << "默认构造函数的调用" << endl;
  this->mCapacity = 0;   //数据的初始化
  this->nSize = 0;
  pAddress = new int[mCapacity];
}
//有参构造函数,可自己指定 容量、初始化
MyArray::MyArray(int capacity)
{
  cout << "有参构造函数的调用" << endl;
  this->mCapacity = capacity;
  pAddress = new int[mCapacity];
  this->nSize = 0;
  //pAddress[capacity] = { 0 };
}
//拷贝构造
MyArray::MyArray(const MyArray& array)
{
  cout << "拷贝构造函数的调用" << endl;
  pAddress = new int[array.mCapacity];
  this->mCapacity = array.mCapacity;
  for (int i = 0; i < array.mCapacity; ++i){
    this->pAddress[i] = array.pAddress[i];
  }
}
//添加元素
void MyArray::Insert_Date(int pos, int val){
  if (pos<0 || pos>=mCapacity){
    return;
  }
  for (int i = nSize - 1; i >= pos; --i)
  {
    this->pAddress[i + 1] = pAddress[i];   //地址右移
  }
  this->pAddress[pos] = val;
  this->nSize++;
}
//获得当前索引的值
int MyArray::Get_Data(int index){
  if (index<0 || index>mCapacity - 1){
    return -1;
  }
  return this->pAddress[index];
}
//获取指定元素的索引值  从左到右
int MyArray::Get_Index(int val) {
  for (int i = 0; i < this->nSize; i++) {
    if (val == pAddress[i]) {
      return i;
    }
  }
  return -1;
}
//尾插法
void MyArray::Push_Back(int val){
  if (nSize == mCapacity){
    return;
  }
  this->pAddress[nSize] = val;
  this->nSize++;
}
//尾删法
void MyArray::Pop_Back() {
  if (nSize == 0) {
    return;
  }
  nSize--;
}
//获得长度
int MyArray::Get_Size(){
  return this->nSize;
}
//获取容量
int MyArray::Get_Capacity() {
  return this->mCapacity;
}
//获取最大值
int MyArray::Get_Max() {
  if (this->nSize == 0) {
    return 0;
  }
  int temp = pAddress[0];
  for (int i = 0; i < this->nSize; i++) {
    if (temp < pAddress[i]) {
      temp = pAddress[i];
    }
  }
  return temp;
}
//获取最小值
int MyArray::Get_Min() {
  if (this->nSize == 0) {
    return 0;
  }
  int temp = pAddress[0];
  for (int i = 0; i < this->nSize; i++) {
    if (temp > pAddress[i]) {
      temp = pAddress[i];
    }
  }
  return temp;
}
void MyArray::Reverse() {
  for (int i = 0; i < nSize; i++) {
    //int temp;
    //temp = pAddress[i];
    //pAddress[i] = new int[pAddress[nSize - i - 1]];
    //pAddress[nSize - i - 1] = temp;
  }
}
int MyArray::Get_Back() {
  int* fAddress = pAddress + nSize-1;
  return *fAddress;
}
//析构函数,释放数组空间
MyArray::~MyArray(){
  cout << "析构函数的调用" << endl;
  if (pAddress != NULL)
  {
    delete[] pAddress;
  }
  pAddress = NULL;
}


main.cpp


#include"MyArr.h"
void test()
{
  MyArray* p = new MyArray(30);
  MyArray p2(*p);
  for (int i = 0; i < 10; ++i){
    p2.Push_Back(i);
  }
  for (int i = 0; i < p2.Get_Size(); ++i){
    cout << p2.Get_Data(i) << " ";
  }
  cout << endl;
  p2.Insert_Date(2, 9);
  for (int i = 0; i < p2.Get_Size(); ++i){
    cout << p2.Get_Data(i) << " ";
  }
  cout << endl;
  int a = p2.Get_Data(2);
  cout << "a = " << a << endl;
  int b = p2.Get_Index(10);
  cout << "b = " << b << endl;
  int c = p2.Get_Min();
  cout << "c = " << c << endl;
  int d = p2.Get_Back();
  cout << "d = " << d << endl;
}
int main()
{
  test();
  system("pause");
  return 0;
}


目录
相关文章
|
3月前
|
搜索推荐 编译器 C语言
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
90 4
|
3天前
|
算法 网络协议 数据挖掘
C++是一种功能强大的编程语言,
C++是一种功能强大的编程语言,
28 14
|
2月前
|
存储 C++ UED
【实战指南】4步实现C++插件化编程,轻松实现功能定制与扩展
本文介绍了如何通过四步实现C++插件化编程,实现功能定制与扩展。主要内容包括引言、概述、需求分析、设计方案、详细设计、验证和总结。通过动态加载功能模块,实现软件的高度灵活性和可扩展性,支持快速定制和市场变化响应。具体步骤涉及配置文件构建、模块编译、动态库入口实现和主程序加载。验证部分展示了模块加载成功的日志和配置信息。总结中强调了插件化编程的优势及其在多个方面的应用。
311 63
|
3月前
|
C++
C++(十一)对象数组
本文介绍了C++中对象数组的使用方法及其注意事项。通过示例展示了如何定义和初始化对象数组,并解释了栈对象数组与堆对象数组在初始化时的区别。重点强调了构造器设计时应考虑无参构造器的重要性,以及在需要进一步初始化的情况下采用二段式初始化策略的应用场景。
|
4月前
|
算法 C++
c++学习笔记04 数组
这篇文章是C++学习笔记4,主题是数组。
45 4
|
3月前
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
264 0
|
4月前
|
C++ 索引
C++数组、vector求最大值最小值及其下标
C++数组、vector求最大值最小值及其下标
141 0
|
5月前
|
C++ 索引 运维
开发与运维数组问题之在C++中数组名和指针是等价如何解决
开发与运维数组问题之在C++中数组名和指针是等价如何解决
34 6
|
4月前
|
安全 编译器 C语言
C++入门-数组
C++入门-数组
|
15天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
25 2