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];
您可以从大小为
行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很重要,可以将其与值一起存储为元组。