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

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

Susan Sarandon
发布: 2024-11-29 04:08:08
原创
785 人浏览过

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

基于用户输入动态调整大小的二维数组

在许多编程场景中,有必要创建其大小在编译时未知的数组或矩阵 -时间。这带来了挑战,因为数组通常具有固定的维度。然而,C 提供了在运行时动态分配内存的机制,允许根据用户输入创建大小的数组。

使用向量的 STL 向量

创建动态二维的一种方法数组是利用向量的向量。这涉及定义一个存储其他向量的向量,从而有效地创建一个矩阵结构。例如:

std::vector<std::vector<int>> matrix(N);
登录后复制

这将创建一个 N×N 矩阵,其中内部向量中的每个元素代表矩阵中的一个单元格。但是,需要注意的是,每个内部向量都需要单独调整大小或赋值,与其他方法相比,其内存效率较低。

利用矩阵包装类

另一种方法方法是创建一个包装类来抽象矩阵表示并处理动态内存分配。下面是一个示例:

template <class T>
class Matrix {
    int columns_;
    std::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]; }
};
登录后复制

此类定义了一个 T 类型的动态矩阵,其中构造函数分配列数和行数,函数operator() 提供使用直观的方式访问矩阵元素的方法行和列索引。

重载数组下标运算符

另一种技术涉及重载数组下标运算符([])。这允许我们使用熟悉的语法访问矩阵元素:

class Matrix {
    int columns_;
    std::vector<T> data;

public:
    Matrix(int columns, int rows) : columns_(columns), data(columns * rows) {}

    T& operator[](const std::pair<int, int>& indices) { return data[indices.first * columns_ + indices.second]; }
};
登录后复制

使用这种方法,我们可以通过以下方式访问矩阵元素:

T& element = matrix[std::make_pair(row, column)];
登录后复制

方法的选择取决于具体的背景和性能要求。无论是利用向量的向量、包装类还是运算符重载,这些技术都提供了在 C 中创建和操作动态二维数组的灵活性。

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

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