multidimensional-array 相关问题

多维数组可以描述为多维表。用于查找给定元素的每个索引称为维度。

如何将二维数组转换为对象数组

我有一个看起来像这样的数组 到达 = [ [{a:1},{b:2}], [{a:5},{b:1}] ] 我想将该数组转换为如下所示的数组 到达 = [ { {a: 1}, {b: 2} }, { {a: 5}, {b: 1} } ]

回答 1 投票 0

从多维数组中查找具有相同键的最大数字

我有这个数组: 数据 = { “列表”:{ “列表-1”:{ “id”:“列表-1”, “标题”:“列表1”, “卡”:[ ...

回答 1 投票 0

Java - 将 2D 数组传递给函数

-------------------------------------------------------- -------------- | |赫恩登 |费尔法克斯 |巴尔的摩 |森特维尔 | -------------------------------------------------- ------------ |赫恩登...

回答 2 投票 0

Php 递归数组计数

我正在尝试编写一个递归计算数组元素的函数。 但结果是假的。 可能是什么问题呢? $模式=数组( 'div' => 数组( '类' => '行', ...

回答 7 投票 0

如何在数组的数组中获取对象

如何获取数组中的对象?我变得不确定 我的数组 = [ [{名称:test1,用户名:sampleuser1}], [{名称:test2,用户名:sampleuser2}], [{名称:test3,用户名:

回答 1 投票 0

3D 建模程序的起点

我需要有关 python 3D 建模程序的帮助。我知道这是一项艰巨的任务,但我只想知道从哪里开始,以及我可能遇到的任何障碍,我需要知道......

回答 2 投票 0

获取多维数组中最后出现的子集的第一级键以及限定列值

我需要在以下数组中找到与最后一次出现 (id = 100001203541047) 相对应的键: [0] => 数组 ( [id] => 10152583762905798_1015258380041579...

回答 6 投票 0

如何找到多维数组中某个项目最后一次出现的键?

我需要在以下数组中找到与最后一次出现 (id = 100001203541047) 相对应的键: [0] => 数组 ( [id] => 10152583762905798_1015258380041579...

回答 6 投票 0

如何从 2D Python 数组中删除方括号以设置为 Firebase RTDB

我有一个基本的网络抓取工具,用于获取天气数据并将其发布到 Firebase。目前,我的所有数据都存储在 2D 列表中,以便于处理,但是 Python 列表包含

回答 1 投票 0

在多维大海捞针中定位针并从其父级返回值

我需要在多维数组中搜索值 IMPORTANT,然后从其父数组中获取其 startIndex 和 endIndex。 [0] => 数组 ( ...

回答 1 投票 0

为什么我的 bash 多维数组代码不起作用?

我正在尝试在 bash 中创建一个多维数组并访问元素。但它不起作用。 我尝试使用这段代码,但出现错误 # 创建一个索引数组来保存内部数组 一个...

回答 1 投票 0

根据数组键后缀对数组值进行分组

我正在尝试根据数组键对数组值进行分组,然后在 UI 中打印结果。 我现在被困在这里几个小时了。 这是我需要格式化的数组: 大批 ( [清单1] => 主要...

回答 6 投票 0

我的嵌套循环范围随着每次迭代而减小

我有一个嵌套的 for 循环来迭代我的矩阵,其中 r 和 c 是行和列。 然而,不知何故,每次迭代,c 都会减少。 例如,当 r = 0 时,c 将从 0 迭代到 9 当 r =...

回答 1 投票 0

如何在 C++ 中比较一维数组和二维数组中的值?

我需要一些关于比较不同维度的两个数组的值的帮助。 浮动增益[21][3]; // job_count 为 21,processor_count 为 3 浮点数[最大值]; int 数组大小 = 21; // job_cou...

回答 1 投票 0

如何在 TypeScript 中初始化多维对象数组?

我正在开发一个项目,我需要按程序生成许多定义游戏板的图块。我的计划是将这些“Tile”对象保存在“Land”的多维数组属性中

回答 2 投票 0

java 中二维数组的第一个索引的合并排序

我正在尝试根据第 0 个索引的值对 2D 数组进行排序。我尝试稍微修改一下合并排序,但我遇到了这个问题,在调用该函数后,仅复制了第一个元素......

回答 1 投票 0

将 void** 转换为 int 的二维数组 - C

我正在尝试将 void** 指针转换为 C 中的 int** 2D 数组 这是我正在尝试使用的代码(删除了所有无关的位): /*假设我有一个名为 gr...的数据结构

回答 1 投票 0

二维数组如何存储在内存中?

#包括 使用命名空间 std; int main() { 整数a[101][101]; a[2][0]=10; 计算< #include<bits/stdc++.h> using namespace std; int main() { int a[101][101]; a[2][0]=10; cout<<a+2<<endl; cout<<*(a+2)<<endl; cout<<*(*(a+2)); return 0; } 为什么a+2和*(a+2)的值相同? 提前致谢! a是一个二维数组,即数组的数组。但当在适当的上下文中使用时,它会“衰减”为指向数组的指针。所以: 在 a+2 中,a 衰减为指向大小为 101 的 int 数组的指针。当您将 is 传递给 ostream 时,您将获得该数组的第一个元素的地址,即 &(a[2][0])*(a+2)中的根据定义是a[2]:它是一个从a[2][0]开始、大小为101的数组。它衰减为一个指向 int 的指针,当你将它传递给 ostream 时,你会得到它的第一个元素的地址,它仍然是 &(a[2][0])**(a+2) 是 根据定义 a[2][0]。当你将它传递给 ostream 时,你会得到它的 int 值,这里是 10。 但要注意:a + 2和a[2]都是指向同一地址的指针(static_cast<void *>(a+2)与static_cast<void *>(a[2])相同),但它们是指向不同类型的指针:第一个指向大小为101的int数组,后者指向int. 我将尝试向您解释编译器如何映射内存: 让我们考虑一个更实用的多维数组示例: int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; 可以执行命令 x/10w a 在GDB中查看内存: 0x7fffffffe750: 1 2 3 4 0x7fffffffe760: 5 6 7 8 0x7fffffffe770: 9 0 每个元素都存储为 int 类型(32 位/4 字节)。 所以矩阵的第一个元素已存储在: 1) a[0][0] -> 0x7fffffffe750 2) a[0][1] -> 0x7fffffffe754 3) a[0][2] -> 0x7fffffffe758 4) a[1][0] -> 0x7fffffffe75c 5) a[1][1] -> 0x7fffffffe760 6) a[1][2] -> 0x7fffffffe764 7) a[2][0] -> 0x7fffffffe768 ... 命令: std::cout << a + 2 << '\n' 它将打印地址 0x7fffffffe768 因为 指针算术: a 的类型是 int** 所以它是一个指向指针的指针。 a+2 是 a[0](第一行)+ 2。结果是一个指针 到第三排。 *(a+2) 遵循第三行,即 {7,8,9} 第三行是一个int数组,它是一个指向int的指针。 然后是操作员 << will print the value of that pointer. 二维数组是数组的数组,因此它在内存中的存储方式如下: char v[2][3] = {{1,3,5},{5,10,2}}; Content: | 1 | 3 | 5 | 5 | 10 | 2 Address: v v+1 v+2 v+3 v+4 v+5 要访问 v[x][y],编译器将其重写为: *(v + y * M + x)(其中 M 是指定的第二个维度) 例如,要访问 v[1][1],编译器将其重写为 *(v + 1*3 + 1) => *(v + 4) 请注意,这与指向指针 (char**) 的指针不同。 指向指针的指针不是数组:它包含指向内存单元的地址,该内存单元包含另一个地址。 要使用指向指针的指针访问二维数组的成员,请执行以下操作: char **p; /* Initialize it */ char c = p[3][5]; 前往p内容指定的地址; 将偏移量添加到该地址(在我们的例子中为 3);转到该地址并获取其内容(我们的新地址)。 将第二个偏移量添加到新地址(在我们的例子中为 5)。 获取该地址的内容。 通过传统的二维数组访问成员时,步骤如下: char p[10][10]; char c = p[3][5]; 获取 p 的地址,并将第一个偏移量 (3) 乘以行的尺寸 (10)。 将第二个偏移量 (5) 添加到结果中。获取该地址的内容。 如果你有一个这样的数组 T a[N]; 然后数组的名称会隐式转换为指向其第一个元素的指针,但极少数例外(例如在 sizeof 运算符中使用数组名称)。 因此,例如在表达式 ( a + 2 ) a 中,转换类型 T * 的值为 &a[0]。 相对于您的数组示例 int a[101][101]; 表达中 a + 2 a 转换为 int ( * )[101] 类型的右值并指向数组的第一“行”。 a + 2 指向数组的第三“行”。行的类型是 int[101] 表达式 *(a+2) 给出了类型为 int[101] 的第三行,它是一个数组。这个数组在表达式中使用时会依次转换为指向其第一个类型为 int * 的元素的指针。 与第三行占用的内存区域起始地址相同 只有表达式 ( a + 2 ) 具有类型 int ( * )[101],而表达式 *( a + 2 ) 具有类型 int *。但两者产生相同的值 - 数组第三行占用的内存区域的起始地址a。 数组的第一个元素与数组本身位于同一位置 - 数组中没有“空白空间”。 在 cout << a + 2 中,a 被隐式转换为指向其第一个元素 &a[0] 的指针,而 a + 2 是 a 的第三个元素 &a[2] 的位置。 在 cout << *(a + 2) 中,数组 *(a + 2) - 即 a[2] - 被转换为指向其第一个元素 &a[2][0] 的指针。 由于 a 的第三个元素的位置和 a 的第三个元素的第一个元素的位置相同,因此输出相同。

回答 5 投票 0

按一列对对象数组进行分组,并对每组内的另一列进行求和

合并两个对象数组后,我得到一个像这样结构的数组。我想将具有相同 ID 的对象分组并添加到它们的数量 [ { 编号:1 名称 : T.SH...

回答 1 投票 0

如何将 ndarray 的转换部分分配给自身?

我想要以下 pytorch 代码的行为: def random_w(L,A): w = torch.rand((L,L,A,A)) # 我们想要 (i,i,a,b) = 0 诊断 = w.diagonal()[...] = 0 # 并且 (i,j,a,b) = (j,i,b,a) ...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.