我有一个string
类型的2D数组,我想在一些循环中修改和调整大小。我的主要目标是通过创建一个2d数组来使用最小内存,该数组将在每次循环迭代时修改,并将char添加到此数组中的相应单元格。这是我的代码:
static void Main(string[] args)
{
int maxBound = 100;//length of freq array
Random rnd1 = new Random();
int numLoops = rnd1.Next(1000, 1200);//number of total elements in freq array
int[] freq = new int[maxBound];//freq array
string[,] _2dim = new string[maxBound, numLoops];//rows,columns
Random rnd2 = new Random();
for (int i = 0; i < numLoops; i++)
{
int s = rnd2.Next(maxBound);
freq[s]++;
//Here I try to add `*` to the _2dim array while resizing it to the appropriate size
}
}
解决方案的主要方法是什么?感谢
答案 0 :(得分:3)
您可能想要使用锯齿状的阵列,而不是2D阵列。简而言之,2D数组始终是N x M矩阵,您无法调整大小,而锯齿状数组是数组数组,您可以使用不同的大小单独初始化每个内部元素(请参阅详细信息的差异{{3} })
int maxBound = 100;
Random rnd = new Random();
int numLoops = rnd.Next(1000, 1200);
string[][] jagged = new string[numLoops][];
for (int i = 0; i < numLoops; i++)
{
int currLen = rnd.Next(maxBound);
jagged[i] = new string[currLen];
for (int j = 0; j < currLen; j++)
jagged[i][j] = "*"; // do some initialization
}
答案 1 :(得分:1)
您应该使用嵌套在List中的string
类型列表。然后您可以修改此列表。为了迭代这个,你应该使用两个for循环。
List<List<string>> l = new List<List<string>> { new List<string> { "a", "b" }, new List<string> { "1", "2" } };
迭代示例:
for(int i = 0; i < l.Count; i++)
{
for(int j = 0; j < l[i].Count; j++)
{
Console.WriteLine(l[i][j]);
}
}