首页 > 后端开发 > C++ > 如何根据用户输入在 C 中创建动态二维数组?

如何根据用户输入在 C 中创建动态二维数组?

Patricia Arquette
发布: 2024-12-08 22:25:11
原创
826 人浏览过

How Can I Create Dynamic Two-Dimensional Arrays in C   Based on User Input?

根据用户输入声明动态二维数组

简介

创建一个动态二维数组,可以根据用户输入进行定制给 C 编程带来了挑战。虽然数组通常在声明时具有固定大小,但此特定任务需要灵活地确定大小。让我们探索动态分配和操作此类数组的不同方法。

向量的向量方法

向量的向量(向量)可以服务作为动态创建矩阵的解决方案。在这种方法中,每个内部向量代表矩阵的一行,而外部向量充当这些行的容器。只需修改外部向量的大小即可调整矩阵的大小。

int n;
cin >> n;
vector<vector<int>> matrix(n, vector<int>(n));
登录后复制

自定义矩阵类

另一种选择是实现自定义矩阵封装了动态管理二维数组的功能的类。这种方法提供了对数据结构的更多控制,并允许高效的内存管理。

template <class T>
class Matrix {
  int columns_;
  vector<T> data;
public:
  Matrix(int columns, int rows) : columns_(columns), data(columns * rows) {}
  T& operator()(int column, int row) { return data[row * columns_ + column]; }
};
登录后复制

运算符[]的多重重载

还可以实现动态使用运算符[]的多个重载的二维数组。这种方法利用代理来间接访问数据,提供类似于传统数组访问的语法。

template<class T, int size>
class Matrix3 {
  T data[size][size][size];
  class Proxy { Matrix3& m_; int index1_, index2_; };
  class Proxy2 { Matrix3& m_; int index_; };
public:
  Proxy2 operator[](int index) { return Proxy2(*this, index); }
  Proxy operator[](int index1, int index2) { return Proxy(*this, index1, index2); }
};
登录后复制

结论

每种方法都提供不同级别的灵活性、效率,并且易于实施。向量的向量方法很简单,但由于存在多个间接级别,可能会对性能产生影响。自定义矩阵类提供了对内存管理和灵活性的更多控制。 Operator[] 方法的多重重载允许使用熟悉的语法访问元素,但需要更复杂的实现。最终,选择取决于应用程序的具体要求。

以上是如何根据用户输入在 C 中创建动态二维数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板