为矩阵创建动态数组,以循环迭代器命名

Create Dynamic Arrays for Matrices named after loop iterator

本文关键字:循环 迭代器 数组 创建 动态      更新时间:2023-10-16

我已经学习了一个程序来根据用户输入创建数量数量。但是现在我希望为矩阵(2D)创建数组来保存矩阵的元素。

用户应输入他想要的矩阵数量和每个矩阵的大小并输入相应的数字。

这是我研究的普通代码。我希望它适用于矩阵。

#include <iostream>
int main()
{
    unsigned int n;
    std::cout << "Enter number of arrays: ";
    std::cin >> n;
    double** array = new double*[n];
    unsigned int* sizeOfInnerArrays = new unsigned int[n];
    for (int i = 0; i < n; ++i)
    {
        std::cout << "Enter size of array " << i << ": ";
        std::cin >> sizeOfInnerArrays[i];
        array[i] = new double[sizeOfInnerArrays[i]];
        for (int j = 0; j < sizeOfInnerArrays[i]; ++j)
        {
            int element;
            std::cout << "Enter element " << j << " of array " << i << ": ";
            std::cin >> element;
            array[i][j] = element;
        }
    }
    //prints out each array as curly-brace enclosed sets of doubles
    for (int i = 0; i < n; ++i)
    {
        std::cout << "{";
        for (int j = 0; j < sizeOfInnerArrays[i] - 1; ++j)
        {
            std::cout << array[i][j] << ", ";
        }
        std::cout << array[i][sizeOfInnerArrays[i] - 1] << "}" << std::endl;
    }
    // free dynamically allocated memory
    for (int i = 0; i < n; ++i)
    {
        delete [] array[i];
    }
    delete[] array;
    delete[] sizeOfInnerArrays;
    return 0;
}

首先,Paulmckenzie在评论中是正确的,您应该真正使用std :: vector,而不是直接使用堆指针,这要简单得多。

我也不真的知道你有什么问题,所以这里有一些评论。

如果每行都有不同数量的元素,则该矩阵如何?对我来说,这只是一件概念上的事情,到目前为止,它只是列表的列表。如果那是您想要的凉爽,但是如果您想要一个矩阵,则需要在尺寸上更加严格。

代码客观上没有任何问题,我想说这个问题确实不属于这里。代码没有问题,如果有明确说出问题的问题。

编辑:我看到您想适应矩阵,实际上我会说,如果您想练习,只需使用std :: vector

进行矩阵类

编辑:创建矩阵类的意思是从字面上看。定义一种矩阵类类型,该类型将处理给定Dimensons的矩阵的所有通用操作,然后您的MAN确实需要所有这些用于循环和迭代来创建矩阵。您只会将它们存储 std::vector<Matrix> matricies; matricies.push_back(Matrix(2,3))

这是C 类的参考