Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取数组2d中地址的位置_C#_C++_Arrays - Fatal编程技术网

C# 获取数组2d中地址的位置

C# 获取数组2d中地址的位置,c#,c++,arrays,C#,C++,Arrays,要获取数组在c++中的位置,可以执行以下操作: class Slot { public: int Color; std::string name; /*.... more properties*/ }; int main() { Slot pix[60]; Slot& randomSlot = pix[12]; randomSlot.Color = 12; randomSlot.name = "sdsd"; Slot

要获取数组在
c++
中的位置,可以执行以下操作:

class Slot
{
public:

    int Color;
    std::string name;
    /*.... more properties*/
};

int main()
{
    Slot pix[60];

    Slot& randomSlot = pix[12];
    randomSlot.Color = 12;
    randomSlot.name = "sdsd";

    Slot* addressOfSlot = &randomSlot;
    Slot* arrayStart = pix;

    //get the original pos
    int x = addressOfSlot - arrayStart;
}
  • 如何获得像这样的
    2d数组的x和y位置

    Slot pix[60][21];
    
  • 我想使用这种方法,因为我将使用指针/引用,我希望有一种快速的方法来获得原始位置

  • 你也可以用不安全的代码或类似的东西在c#中这样做吗

  • 您可以从大小为
    行x列的二维数组映射到大小相同的一维数组,反之亦然

    array2D[x][y] <-> array1D[x * COLS + y];
    
    array2D[x][y]array1D[x*COLS+y];
    

    其中
    COLS
    是列数。这是使用C或C++中的数组存储在技术上所调用的事实。Fortran或MATLAB使用列主顺序,因此索引是转置的。

    您如何表示[30][30]?你是想得到一个2D位置的一维位置吗?你是说给定一个值,你想在数组中找到它的指示符吗?@ NaNaLover和它在C<代码>字节[/MyLaaS/<代码>中所表示的相同的方式,我确信是C中的连续内存,我在C中寻找这个,但是C++是解释问题的唯一方法。RonBeyer说得对。至少在C#中,如果您需要O(1)查找,更好的数据结构应该是哈希表或字典。如果X/Y很重要,可以将其与值一起存储为元组。