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

时间:2017-02-27 03:23:26

标签: c++

我已经学会了一个根据用户输入创建多个数组的程序。但现在我想要为矩阵创建数组(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;
}

1 个答案:

答案 0 :(得分:0)

首先,PaulMckenzie在他们的评论中是正确的,你应该使用std :: vector而不是直接使用堆指针,它更简单。

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

如果每行可以有不同数量的元素,这是一个矩阵怎么样?这对我来说只是一个概念性的事情,截至目前它只是一个列表清单。如果这是你想要的酷,但如果你想要一个矩阵,你需要在尺寸上更严格。

代码没有任何客观上的错误,我会说这个问题真的不属于这里。代码没有问题,如果有问题请明确说明问题是什么。

编辑:我看到你想让它适应矩阵,我想说如果你想练习只需用std :: vector

制作一个矩阵类

编辑:我的意思是创建一个矩阵类就是字面意思。定义一个矩阵类类型,它将处理给定维数矩阵的所有泛型运算,然后你的主要确实需要所有那些for循环和迭代来创建矩阵。你只需要存储它们 std::vector<Matrix> matricies; matricies.push_back(Matrix(2,3))

以下是C ++类http://www.cplusplus.com/doc/tutorial/classes/

的参考