问题标签 [heterogeneous-array]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8195 浏览

arrays - 根据某些元素中可能为 nil 的属性对数组进行排序

我有一个对象数组

我需要按时间排序数组,然后按 val

但是使用 sort_by 会引发错误,因为时间为零。

我现在正在使用一种丑陋的方式进行排序,但我相信有一个很好的方法来解决它

0 投票
0 回答
488 浏览

c# - C#中的多重继承和异构集合

努力完成一项旨在将 C++ 中工作的内容转换为 C# 的任务。

我知道 C# 不支持真正的多重继承,但它可以通过接口和组合来模拟。

在 C++ 中,我有一个设计,其中两个类从一个父类继承。假设 Vehicle 是父类,而 Car 和 Boat 继承自 Vehicle。

还有第二个类,从中派生出另外三个类。我们称之为许可证。三个附加类继承自三个 Vehicle 类和 License 类。

所以我们有类似的东西:

现在在我的主要方法中,我可以为上面的三个多重继承类创建对象,并将它们添加到两个指针数组中,一个是 Vehicle 类型,一个是 License 类型。然后,我可以从一个阵列访问 Vehicle 的一半功能,从另一个阵列访问 License 功能。例如:

现在我可以遍历这两个数组并访问 Vehicle 和 License 中的每个方法。例如:

现在这在 C++ 中运行良好,所以我的问题是将其翻译成 C#。有什么合理的方法可以做类似的事情吗?

到目前为止,我已经设置了三个车辆类,并通过执行以下操作设置了三个“模拟多重继承”类:

我知道我可以创建一个 Vehicle 类型的异构数组并访问 move(),但是有什么方法可以让一个异构集合也访问 renew(),就像我在 C++ 中使用 LiscenseHeteroArray[] 所做的那样?

0 投票
2 回答
319 浏览

matlab - 仅对具有不同数据类型的元胞数组中的数值元素进行舍入

我有一个包含不同类型变量(双精度和字符串)的单元格,我想对单元格中的数字元素进行四舍五入。 round函数只能与数组一起使用,不能与单元格一起使用,所以我正在尝试使用cell2mat- 但如果单元格中的元素类型不同,则不能使用此函数。

知道如何舍入此单元格中的数字元素吗?当然,我不想对单元格元素进行循环。

0 投票
1 回答
62 浏览

c++ - 其中有中间锁的 Deque 列表

我想设计一个数据结构,其中我在元素之间有中间锁实体。这些锁对于两个相邻的元素是通用的。

E(i) 是双端队列,其中添加元素由 B(i) 和 B(i+1) 控制。E 可以拆分。E(i) 和 E(i+1) 可以合并形成 E(i),去除 B(i+1)。禁止删除 E。

在 C++ 中,最好的数据结构是什么。

图表

0 投票
3 回答
65 浏览

matlab - 如何表示和访问这个多值数据结构的元素?

我正在尝试实现用于传感器融合的Brooks-Iyengar 算法,并尝试在 MATLAB 中表示以下数据结构。

我尝试执行以下操作

但是我不知道如何访问每个元素,即1.53.2以及4下一组值。我从 中获得一组元素B{1},但之后无法获得各个值。

任何指向适当链接的想法或指针都会有所帮助。

0 投票
2 回答
2540 浏览

c++ - C++ 异构列表

几个星期以来,我一直在互联网上搜索有关 c++ 中的异构列表 ( vector, array, list),但是,在所有站点和论坛中,答案都是相同的:boost::any,但我想要一种在纯 C ++ 中执行此操作的方法。我开发了这个:

但我得到这个错误:

我知道问题在于在类中或类中auto用作返回类型,但我不知道如何解决。auto get()anyauto& at(int idx)queue

0 投票
1 回答
158 浏览

matlab - 如何测试异构数组中元素的类别?

MATLAB 支持将属于实现的公共根类的子类的对象分组matlab.mixin.Heterogeneous到单个数组中,该数组将具有最近的共同祖先的类,例如:

我想编写一个函数来测试传入的未指定大小的句柄列表(通常是标量,但也可能是数组)是否属于特定的硬编码类或其后代。

如果输入是标量或齐次数组(即所有对象都具有相同的类),并且我们正在测试目标类本身(不包括子类),我们将从这样的函数中得到正确的结果:

hCandidate但是,如果是异构数组,这将不起作用,因此我们必须这样做:

这是有效的,因为从异构数组中选择单个元素会使它们恢复到自己的特定类。

问题:如何使isCorrectClass上面显示的函数适应目标类所在的以下层次结构Middle(假设我的输入数组可能包含任何层次结构类的对象)?

0 投票
2 回答
1126 浏览

c++ - c ++异构容器,获取条目作为类型

我有以下异构容器的简单实现:

以下是如何使用它:

我可以向其中添加任何类型的条目。但是我不知道如何实现一个函数来检索元素,作为某种类型,它可能与它的条目或基类相同。

我需要的似乎同时是虚拟和模板,这是不可能的。

0 投票
2 回答
2143 浏览

c++ - 如何在 C++ 中实现通用指针类型

在 C 中,可以将数据指针分配给 void 指针,然后将其转换回原始类型,该数据指针将被恢复。语言标准保证这种转换不会丢失信息。这通常意味着(不一定,但对于大多数平台来说都是如此)void 指针的大小与数据指针的大小相同。因此,可以依靠这些事实将 void 指针用作指向异构类型的通用指针,而 void 指针本身具有统一的大小和表示形式。例如,有一个 void 指针数组,其元素指向动态分配的不同类型的对象。构造这样的数组使某些事情变得方便。我的问题是:如何实现类似的东西,C++ 中的通用指针类型,它符合以下要求:

  • 从任何指针类型构造,可以编写如下代码

    /li>
  • 恢复原始指针

    /li>
  • 更新:根据一些评论,以上无法在 C++ 中完成,然后类似于

    应该足够了,抛出异常类型不兼容。

  • g_pointer 可以包含在 std::vector 或普通数组中,这基本上意味着

    (更新:这总是正确的,前提是可以正确实现这样的类,谢谢指出。)

我刚刚发现 boost::any,看一下它的介绍似乎暗示它可能是我想要的,尽管可能并非如此。因此,欢迎任何熟悉 boost::any 的人发表评论。

更新:(回复一些评论)

  • g_pointer 类型对象应该知道它指向的对象的底层类型。因此,recover 方法应始终返回该类型的指针。
  • 通用指针类型,意味着对任何对象的引用,恕我直言,对于任何支持面向对象范式的语言来说,这是一个合理的要求。

更新:谢谢@Caleth,std::any 很棒。

0 投票
1 回答
338 浏览

json - 解码异构数组

我发现了很多关于实现解码异构对象数组的示例,但它们并不真正适合我的情况。

这是我的 JSON:

这是我最初实现的:

但后来我发现结果数组中的最后一个对象与其他对象不同。如何为相同对象类型的数组中的特定对象实现自定义解析逻辑?