将矩阵保存在数组中

时间:2016-05-20 13:40:08

标签: c# arrays matrix

我是C#的新人。

我将矩阵构建为多维数组。数据由单个字符组成,如

a | g | f | r | o
t | * | h | s | u
y | j | f | . | k

所以我用了

char[,] matrix= new char[5, 3]; 

通过这种方式,我有一个带有5个collen和3个行的矩阵。 现在我想收集不同的矩阵,并保存在一个新的数组或另一种结构......

我想做的伪代码:

arrayOfMatrix.AddNewItem(matrix);

收集一个数组(或列表?)中的所有矩阵。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:3)

您可以使用这样的多维数组的通用List<T>

List<char[,]> arrayOfMatrix = new List<char[,]>();
arrayOfMatrix.Add(matrix1);
arrayOfMatrix.Add(matrix2);

答案 1 :(得分:1)

只需创建一个List<T>

List<T>是一种集合类型,其行为类似于数组,但它没有固定长度,因此您可以动态地向其中添加项目。

让我们看看这个行动!

首先,创建一个字符矩阵列表:

var list = new List<char[,]>();

然后,创建一个字符矩阵并将其添加到列表中:

char[,] m1 = {{'a', 'b', 'c'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}};
list.Add(m1);

您可以通过调用其索引器来访问列表:

Console.WriteLine(list[0]);

List中有很多很酷的方法和属性允许你随意操作它:

  • Count
  • Contains
  • Clear
  • Find
  • IndexOf
  • Insert
  • Remove
  • Reverse
  • Sort

转到https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx了解详情。

答案 2 :(得分:1)

如果您正在处理char元素,那么将char行表示为string会更简单。所以,你的矩阵变成了一个字符串数组或字符串列表。

List<string> matrix = new List<string>()
{
   "agfro",
   "t*hsu",
   "yjf.k"
}

宣告:

List<List<string>> matrix_list = new List<List<string>>() { matrix };

然后根据需要继续将新矩阵添加到matrix_list中。您对元素的访问权限将是matrix_list[list_ix][row_ix][column_ix],其中ix是索引的缩写。

现在,您得到的实际上是锯齿状数组,因此您的代码可以强制执行矩阵宽度和长度。