21xrx.com
2024-11-22 06:22:47 Friday
登录
文章检索 我的文章 写文章
C++实现二维数组类的创建
2023-07-05 01:22:34 深夜i     --     --
C++ 二维数组 创建 实现

二维数组是一种非常常见的数据结构,可以在许多应用程序中找到它们的身影。C++是一种功能强大的编程语言,它允许开发人员创建自定义数据结构。在本文中,将介绍如何使用C++创建一个二维数组类。

创建一个二维数组类

从头开始实现二维数组类相对来说有些困难,因此我们可以从一个现成的类继承并进行修改。

首先,我们应该定义一个二维数组类,让它具有一些基本的函数和变量。我们可以在头文件中定义这些内容,并在源文件中实现它们。

假设我们定义一个名为Array2D的类,它有以下变量和函数:


#ifndef ARRAY2D_H

#define ARRAY2D_H

class Array2D

{

private:

  int m_rows;

  int m_cols;

  int** m_data;

public:

  Array2D(int rows, int cols);

  ~Array2D();

  int& operator()(int row, int col);

  int getRows() const;

  int getCols() const;

};

#endif // ARRAY2D_H

在上面的代码中,我们定义了三个变量和四个函数。变量m_rows和m_cols表示二维数组的行和列数。m_data是一个指向指针的指针,用于存储二维数组中的数据。我们还定义了一个构造函数Array2D,一个析构函数~Array2D和一个用于访问二维数组元素的运算符()。

创建构造函数和析构函数

接下来,我们实现构造函数和析构函数。构造函数应该分配内存以容纳二维数组数据,并将数据初始化为0。析构函数应该释放所有已分配的内存。


Array2D::Array2D(int rows, int cols)

  :m_rows(rows), m_cols(cols)

{

  m_data = new int*[rows];

  for (int i = 0; i < rows; ++i)

  {

    m_data[i] = new int[cols];

    for (int j = 0; j < cols; ++j)

    {

      m_data[i][j] = 0;

    }

  }

}

Array2D::~Array2D()

{

  for (int i = 0; i < m_rows; ++i)

  {

    delete[] m_data[i];

  }

  delete[] m_data;

}

在上面的代码中,我们使用了new运算符来分配内存。我们首先分配内存以容纳行指针,然后为每一行分配内存。我们还使用了一个嵌套循环来将数据初始化为0。在析构函数中,我们首先释放每行分配的内存,然后释放行指针分配的内存。

创建运算符函数和访问器函数

我们还需要实现访问二维数组元素的运算符(),并创建两个访问器函数getRows()和getCols()。


int& Array2D::operator()(int row, int col)

{

  return m_data[row][col];

}

int Array2D::getRows() const

{

  return m_rows;

}

int Array2D::getCols() const

{

  return m_cols;

}

在上面的代码中,我们在运算符()中使用了二维数组的索引和行列数来访问数组元素。在getRows()和getCols()中,我们返回了相应的行列数。

完整的代码

最后,应该看一下完整的源文件代码和头文件代码。

Array2D.h


#ifndef ARRAY2D_H

#define ARRAY2D_H

class Array2D

{

private:

  int m_rows;

  int m_cols;

  int** m_data;

public:

  Array2D(int rows, int cols);

  ~Array2D();

  int& operator()(int row, int col);

  int getRows() const;

  int getCols() const;

};

#endif // ARRAY2D_H

Array2D.cpp


#include "Array2D.h"

Array2D::Array2D(int rows, int cols)

  :m_rows(rows), m_cols(cols)

{

  m_data = new int*[rows];

  for (int i = 0; i < rows; ++i)

  {

    m_data[i] = new int[cols];

    for (int j = 0; j < cols; ++j)

    {

      m_data[i][j] = 0;

    }

  }

}

Array2D::~Array2D()

{

  for (int i = 0; i < m_rows; ++i)

  {

    delete[] m_data[i];

  }

  delete[] m_data;

}

int& Array2D::operator()(int row, int col)

{

  return m_data[row][col];

}

int Array2D::getRows() const

{

  return m_rows;

}

int Array2D::getCols() const

{

  return m_cols;

}

总结

本文介绍了如何使用C++创建一个二维数组类。我们使用了类成员变量和函数来存储二维数组的数据和操作。我们还实现了构造函数和析构函数以及访问器函数和访问二维数组元素的运算符()。通过使用这些技术,开发人员可以方便地创建自定义数据结构以完成各种任务。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复