标签: jagged-arrays

C#3.0参差不齐的阵列性能优化与矩形阵列相比如何?

在Apress的书"插图C#2008"中,pg.343注:

"一维数组在CIL中有特定的指令,允许它们针对性能进行优化.矩形数组没有这些指令......因此,使用锯齿状数组有时会更有效......"

有谁知道如何实现这些性能优化?

c# arrays optimization jagged-arrays

6
推荐指数
0
解决办法
1605
查看次数

C#/ C++:如何可视化多维数组

例如:二维数组可以像砖墙一样用方形砖可视化,其中每个砖代表我们阵列中的坐标.三维数组可以以相同的方式可视化为框或立方体.

但是,这是一个棘手的部分,您如何可视化具有多个(超过3个)维度的数组?或者,对于那个部分,如何使用多个维度,但多个维度中的多个维度可视化数组?

例如:如何可视化这样的数组:数组[3,3,3,3] [3,3] [3,3,3,3,3] [3]?

c# c++ arrays jagged-arrays

6
推荐指数
2
解决办法
1万
查看次数

阵列数组

如何在C#中创建数组?我已经阅读过有关创建锯齿状数组的内容,但我不确定这是不是最好的方法.我想要实现这样的目标:

string[] myArray = {string[] myArray2, string[] myArray3}
Run Code Online (Sandbox Code Playgroud)

然后我可以像访问它一样 myArray.myArray2[0];

我知道代码不起作用,只是作为一个例子来解释我的意思.

谢谢.

c# arrays jagged-arrays

6
推荐指数
2
解决办法
3万
查看次数

C#使用Linq从锯齿状数组中获取列

如何使用Linq从锯齿状数组中获取列的元素作为平面数组????

public class Matrix<T>
{
    private readonly T[][] _matrix;

    public Matrix(int rows, int cols)
    {
        _matrix = new T[rows][];
        for (int r = 0; r < rows; r++)
        {
            _matrix[r] = new T[cols];
        }
    }

    public T this[int x, int y]
    {
        get { return _matrix[x][y]; }
        set { _matrix[x][y] = value; }
    }

    // Given a column number return the elements
    public IEnumerable<T> this[int x]
    {
        get
        {
        }
    }
}

Matrix<double> matrix = new Matrix<double>(6,2);
matrix[0, 0] = …
Run Code Online (Sandbox Code Playgroud)

c# linq jagged-arrays

6
推荐指数
1
解决办法
5700
查看次数

如何在c#中反转逻辑锯齿状数组的值?

下午好,我有一个带有真值和假值(或0和1)的交叉#jagged数组,我想要反转这些值:

1 1 1 1
0 1 1 0
1 1 1 1
1 0 0 1
Run Code Online (Sandbox Code Playgroud)

成为:

0 0 0 0
1 0 0 1
0 0 0 0
0 1 1 0
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以不循环它?像!myJaggedArray?

c# arrays math matrix jagged-arrays

6
推荐指数
2
解决办法
384
查看次数

快速引用内部数组

我来自C#世界,曾经习惯于将数组作为引用类型。据我了解,快速数组中的是值类型,但它们试图充当参考值。

我实际上不知道如何问自己需要什么(我认为这是当我需要知道答案才能提出问题时的情况),但是在C#中,我会说我需要存储对a的内部数组的引用锯齿状数组变成局部变量。

考虑以下代码:

// a function to change row values in-place
func processRow(inout row : [Int], _ value : Int)
{
    for col in 0..<row.count
    {
        row[col] = value;
    }
}

// a function to change matrix values in-place
func processMatrix(inout matrix : [[Int]])
{
    for rowIdx in 0..<matrix.count
    {
        // (1) Works with array in-place
        processRow(&(matrix[rowIdx]), -1)

        // (2) Creates local copy
        var r = matrix[rowIdx]; // <--- What to write here to not make a copy but still …
Run Code Online (Sandbox Code Playgroud)

c# arrays jagged-arrays mutability swift

6
推荐指数
1
解决办法
152
查看次数

在Powershell中避免不可知的锯齿状阵列扁平化

我在Powershell中遇到了一个有趣的问题,并且无法找到解决方案.当我谷歌(并找到像这篇文章的东西)时,没有任何涉及我正在尝试做的事情,所以我想我会在这里发布问题.

问题与外部数组长度为1的多维数组有关.似乎Powershell非常坚持像@( @('A') )变为扁平化阵列一样@( 'A' ).这是第一个片段(提示符是>,顺便说一句):

> $a =  @( @( 'Test' ) )
> $a.gettype().isarray
True
> $a[0].gettype().isarray
False
Run Code Online (Sandbox Code Playgroud)

所以,我希望$a[0].gettype().isarray是真的,所以我可以将值索引为$a[0][0](真实场景是在循环内处理动态数组,我想得到值$a[$i][$j],但如果内部项是不被识别为数组但作为字符串(在我的情况下),您开始索引字符串的字符,如在$a[0][0] -eq 'T').

我有几个很长的代码示例,所以我最后发布了它们.并且,作为参考,这是在安装了PSv2和PSCX的Windows 7旗舰版上.

考虑代码示例1:我使用+ =运算符手动构建一个简单的数组.中间阵列$w是扁平的,因此不会正确地添加到最终阵列中.我已经在网上找到类似问题的解决方案,基本上是在内部数组之前插入一个逗号来强制外部数组不会变平,这确实有效,但同样,我正在寻找一种可以在循环内构建数组的解决方案(一个锯齿状的数组数组,处理一个CSS文件),所以如果我将前导逗号添加到单个元素数组(实现为中间数组$y),我想对其他数组(如$z)做同样的事情,但这会产生负面影响如何$z添加到最终数组.

现在考虑代码示例2:这更接近我遇到的实际问题.当从函数返回具有一个元素的多维数组时,它将被展平.它离开函数之前是正确的.再一次,这些都是例子,我真的试图处理一个文件,而不必知道该函数是否会回来@( @( 'color', 'black') )或与@( @( 'color', 'black'), @( 'background-color', 'white') )

有没有人遇到这个,有没有人解决这个问题?我知道我可以实例化框架对象,并且我假设如果我创建一个对象[],列表<>或其他类似的东西,一切都会好的,但我一直在处理这个问题.肯定似乎必须有一个正确的方法来做到这一点(无需实例化真正的框架对象).

代码示例1

function Display($x, [int]$indent, [string]$title)
{
  if($title -ne '') { write-host …
Run Code Online (Sandbox Code Playgroud)

arrays powershell jagged-arrays

5
推荐指数
1
解决办法
2783
查看次数

如何在锯齿状数组中查找唯一值

我想知道如何计算锯齿状数组中唯一值的数量.

我的域对象包含一个具有空格分隔值的字符串属性.

class MyObject
{
    string MyProperty; //e.g = "v1 v2 v3"
}
Run Code Online (Sandbox Code Playgroud)

给定一个MyObject 列表,如何确定唯一值的数量?

以下linq代码返回锯齿状数组值的数组.一种解决方案是存储临时单个项目数组,循环遍历每个锯齿状数组,如果值不存在,则添加它们.然后一个简单的计数将返回唯一的值数.但是,想知道是否有更好的解决方案.

db.MyObjects.Where(t => !String.IsNullOrEmpty(t.MyProperty))
    .Select(t => t.Categories.Split(new char[] { ' ' },
        StringSplitOptions.RemoveEmptyEntries))
    .ToArray()
Run Code Online (Sandbox Code Playgroud)

以下是一个更具可读性的示例:

array[0] = { "v1", "v2", "v3" }
array[1] = { "v1" }
array[2] = { "v4", "v2" }
array[3] = { "v1", "v5" }
Run Code Online (Sandbox Code Playgroud)

从所有值中,唯一项为v1,v2,v3,v4,v5.

唯一商品的总数为5.

有没有一个解决方案,可能使用linq,只返回唯一值或返回唯一值的数量?

c# linq arrays jagged-arrays

5
推荐指数
2
解决办法
3063
查看次数

将锯齿状数组直接转换为2D数组,而无需迭代每个项目?

我正在尝试将DataTable保存到Excel工作表中。我的代码是这样的。

Excel.Range range = xlWorkSheet.get_Range("A2");
range = range.get_Resize(dtExcel.Rows.Count, dtExcel.Columns.Count);
object[,] rng1 = new object[dtExcel.Rows.Count, dtExcel.Columns.Count];
Run Code Online (Sandbox Code Playgroud)

Excel范围要求范围值作为array [,],但我将DataTable作为锯齿状的array [] []。

object[][] rng2 = dtExcel.AsEnumerable().Select(x => x.ItemArray).ToArray();
Run Code Online (Sandbox Code Playgroud)

Is there any built-in function to directly convert the jagged array[][] to a 2D array[][] ? Iterating through Excel, DataTable and assigning seems slower with bulk data..

Also I don't want to setup querying with DSN for excel.. I chose excel storage to avoid the configuring of any databases.. :P I found a detailed explanation …

c# jagged-arrays type-conversion export-to-excel multidimensional-array

5
推荐指数
1
解决办法
1912
查看次数

使用Linq对锯齿状数组(求和,平均值,其他函数)进行列操作

假设我们有一个具有相等长度项数组的锯齿状数组(即忽略超出范围):

int[][] jaggedArray = new int[][] 
{
    new int[] {1, 3, 5},
    new int[] {0, 2, 4},
    new int[] {11,22,6}
};
Run Code Online (Sandbox Code Playgroud)

应用c#Linq执行列操作的最优雅方法是什么.简单列操作的示例结果Sum和Average:

Sum()列结果:int [] {12,27,15} Average()列结果:int [] {4,9,5} ...对列进行操作的任何其他类似扩展方法.

我能找到的最相关的问题就在这里.

感谢您的回答,我已经接受了Jay的答案,并在此处发布了一个类似但更复杂的列集合.

c# linq jagged-arrays

5
推荐指数
1
解决办法
1239
查看次数