【问题标题】:2D Array size at run time运行时的二维数组大小
【发布时间】:2015-05-24 04:59:15
【问题描述】:

我将一个已知大小的矩阵(来自 file.txt)放入相同大小的二维数组中。这段代码很好。

但现在我真的在寻找扩展它,例如将未知大小的矩阵放入二维数组,即使用动态大小的二维数组。

这是我正在修改的 C# 代码。

int[,] matrix = new int[3,3]; 
int i = 0, j = 0, k = 0;

#region Reading Matrices From Files
// Matrix 1 Manipulation...............
// Read the file as one string. 
string text = System.IO.File.ReadAllText("file.txt");
//reads all the text of file of given path in a string

foreach (var row in text.Split('\n'))
{
    //outter foreach loop is for setting number of rows equal to number lines by splittin over \n
    j = 0;
    foreach (var col in row.Trim().Split(' '))
    {
        //inner foreach loop is for setting number of columns equal to number chracters by splittin over space

        matrix[i, j] = int.Parse(col.Trim());
        j++;
    }
    i++;
}

感谢任何帮助....

【问题讨论】:

  • 那么问题是什么?
  • 忘记显式使用数组 - 改用List<List<YourContentType>>。管理您自己的阵列的工作仅适用于证明存在性能问题的情况。链接:msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspxblogs.msdn.com/b/ericlippert/archive/2008/09/22/…
  • 但不幸的是,我被分配使用数组而不是列表来执行此操作...@PieterGeerkens
  • @MuhammadNomanSajid:如果是作业,就说是作业。如果您提供更完整的数据,我们可以更好地确保您了解必要的概念。

标签: c# arrays multidimensional-array dynamic-programming


【解决方案1】:

数组是固定大小的数据结构。它在许多语言中得到了很好的应用。不幸的是,一旦创建,您就不能修改其内容。

即Lists如何调整大小?

List 实际上是用数组实现的。所以最初一个列表包含固定数量的对象。当你想添加一个超过这个容量的对象时,我们将当前数组复制到一个更大的数组中,从而动态增加容量。

使用这个想法,我们实际上可以创建您的矩阵类,它会自动从数组而不是列表调整大小。

我希望以上内容能让您思考如何从数组创建矩阵!如果没有,这里有更多提示:

  • 保留两个整数来跟踪当前数组的容量。如果你想添加一个超过一个的元素(比如你在一行中添加了一个条目,但该行已经满了),那么你想做一个调整大小的操作
  • 调整大小操作包括初始化一个更大(通常是两倍)大小的新数组,然后复制所有值
  • 不要忘记在调整大小后检查所有数组的大小是否相同!你可能需要一个循环

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    相关资源
    最近更新 更多