问题标签 [generic-programming]

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 回答
12081 浏览

java - Java:整数 obj 无法转换为 Comparable

我在尝试将驱动程序类中的 Integer 对象作为我创建的 SortedArray Generic 类的函数的参数传递时遇到问题。从我的驱动程序类中,我将用户的 int 输入转换为一个 Integer 对象,以将其转换为我的 SortedArray 类的 Comparable。

我继续收到错误消息:“线程“main”中的异常 java.lang.ClassCastException:java.lang.Integer 无法转换为 Comparable”。我查看了一些同学的源代码,只是发现在设置参数/参数方面差别不大,但他们的代码工作得很好。我一直在寻找几个小时试图找出我犯了什么错误,但我仍然找不到为什么我的 Integer 对象不能转换为 Comparable。

这是我的 SortedArray 类的一些内容

这是我的驱动程序类的代码,它传递整数对象 insertObj 作为 SortedArray 的插入函数的参数。

0 投票
1 回答
1817 浏览

java - Java:扩展数组大小,似乎无法将所有值保留在原始位置

对于我目前的作业,我试图通过一个通用类对我的数组进行排序,因为用户将值插入到它的位置。当大小读取为完全加载时,数组类会调用一个扩展方法,该方法会增加数组的大小,同时将其值保留在适当的位置,这是我从教授的笔记中遵循的。出于某种原因,除 location[0] 之外的所有值似乎都放错了位置或从数组中删除了。我倾向于问题出在扩展方法上,但我不知道如何解决这个问题。

例如,初始大小当前设置为 5,但在调用扩展方法时增加 3。用户可以完美地输入值 1,2,3,4,5。但是当用户输入新值 6 时会调用扩展,该值会输出 1、6、null、null、null、null 的数组。任何进一步将导致错误“线程“主”java.lang.NullPointerException中的异常”

这是我的排序数组类:

这是我的驱动程序类,它调用 SortedArray 类中的 insert 方法。

0 投票
3 回答
246 浏览

c++ - 在通用编程/TMP 世界中,模型/策略和“概念”到底是什么?

我想在一个地方知道这三个概念的精确而简洁的定义。答案的质量应该取决于以下两点。

  1. 展示一个简单的代码片段来展示概念/技术的用途和用途。
  2. 要简单易懂,以便没有任何接触过该领域的程序员可以掌握它。

笔记:

可能有很多正确的答案,因为每个概念都有许多不同的方面。如果有很多好的答案,我最终会将问题变成 CW 并汇总答案。

-- 接受后编辑 --

Boost 有一篇关于泛型编程概念的好文章

0 投票
2 回答
1574 浏览

scala - Scala:实现 Numeric[T] 的子类型

如何实现 Numeric[T] 的子类型?我一直在寻找这方面的指南,但没有找到。子类型的示例可以是 Rational 还是 Complex?

在此先感谢 Troels

0 投票
4 回答
466 浏览

c++ - 持有泛型类型的实例 - C++

我有一个tree_node班级和一个tree班级。

tree_node期望创建时的实例T。我怎样才能通过它????我可以说T(),但它只有在T有一个无参数的构造函数时才会起作用。我不能有无参数构造函数,因为如果没有无参数构造函数tree_node,它将无法编译。T

我正在寻找一种tree_node可以正确保存所有类型(包括指针类型)的设计方法。

编辑

在尝试了各种方法后,我发现这boost::optional在这种情况下很有帮助。我可以T value进入boost::optional<T> value。这将解决空构造函数问题。所以我可以有另一个构造函数重载,tree_node它只需要一个key. 这可以由根节点使用。这是正确的方法吗?

谢谢..

0 投票
2 回答
1791 浏览

c++ - C++ 的 value_type 可以从 iterator_traits 扩展到所有类型吗?

我想创建一个类似于 std::iterator_traits::value_type 的构造,它可以使用相同的语法对所有类型无缝工作。想象一下,我们有以下内容:

这适用于 POD 类型。我可以将它专门用于我自己的课程:

虽然我更愿意在理想世界中避免额外的 value_type 实例化。

问题在于 STL 迭代器。我需要一个让我进入迭代器层次结构的专业化。这失败了,因为编译器选择了基本情况:

选择层次结构更高的类(_Iterator_with_base 是最自然的,因为这是定义 value_type 的地方)失败,因为它需要将所有迭代器特征指定为模板参数。

我正在尝试做的事情甚至可能在 C++ 中实现吗?

0 投票
4 回答
2859 浏览

c# - 有人可以解释什么意思,什么时候应该使用它,以及这个结构应该如何配合

我使用泛型相当长的时间,但我从未使用过像List<? super T>.

这是什么意思?如何使用它?擦除后的效果如何?

我还想知道:它是泛型编程(模板编程?)中的标准,还是只是 java 的“发明”?例如,c# 是否允许类似的构造?

0 投票
4 回答
2291 浏览

haskell - 在haskell中遍历和过滤树

我对 Haskell 很陌生(仍在努力完全理解单子)。我有一个问题,我有一个树状结构

我想做的是能够遍历它并生成带有过滤器的新树。例如,我可能想将树中的所有 DataB2 更改为“foo”。

当它们位于同一数据部分时,我已经看到了树的示例,并且构造函数相似。

在 python 世界中,我只需遍历列表,匹配我需要的任何内容,然后替换值。

在 Haskell 中,我猜我需要能够复制我的树,但是你如何处理隐藏在构造函数和不同数据类型中的列表?

0 投票
3 回答
375 浏览

c++ - 关于使用任意类型的给定参数进行任意操作的任何建议?

基本上我只想使用任意类型的给定参数进行任意操作。

参数类型基类是 Var,而 Operation 是将为给定参数执行的操作的基类。

我有 Evaluator 类,它包含一组使用 opId 映射的运算符。Evaluator 将根据 evaluate() 成员函数中给出的 opId 参数进行操作,然后 evaluate() 函数将搜索支持的运算符,该运算符将接受参数类型和 opId。

我想问的是,是否有任何有效的模式或算法可以在没有 dynamic_cast<> 和/或循环操作符集合的情况下做到这一点。

`

`

0 投票
1 回答
97 浏览

delphi - 通用类型标识符转换。如何?

如何将 TypeIdenitifier 转换为类类型?我需要使用隐式转换。

我在隐式转换“TTypeIdenitifierParentClass(elem).TestField:=0;”上得到“无效类型转换”。

我要使用的原则是 TypeIdenitifier 将代表一个从 TTypeIdenitifierParentClass 派生的类。类类型有很多,但它们都派生自该类。

我该怎么做呢?