问题标签 [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 投票
15 回答
67734 浏览

java - 泛型对类

只是尝试我在过去的试卷中找到的这个问题,以便我可以为即将到来的 Java 考试做准备。

提供一个通用类 Pair 来表示成对的事物。该类应提供构造函数、获取对的第一个成员的方法、获取对的第二个成员的方法、设置对的第一个成员的方法、设置对的第二个成员的方法. 该类应该在两种类型上进行参数化,一种用于第一个成员,另一种用于该对的第二个成员。

这是这个问题的正确实现吗?

0 投票
5 回答
2188 浏览

c++ - 通用/模板编程最佳实践:限制类型,或不限制类型

那是我的问题。我只是好奇关于限制可以传递给通用函数或类的类型的共识是什么。我想我在某个时候读过,如果你正在做通用编程,通常最好让事情保持开放而不是试图关闭它们(不记得源代码)。

我正在编写一个具有一些内部通用函数的库,我觉得它们应该只允许库中的类型与它们一起使用,因为这就是我要使用它们的意思。另一方面,我不确定我为锁定事物所做的努力是否值得。

有人可能对这个话题有一些统计资料或权威评论吗?我也对合理的意见感兴趣。希望这不会使这个问题完全无效:\

此外,这里是否有任何标签等同于“最佳实践”?我没有具体看到那个,但是能够为给定的 SO 主题提供所有最佳实践信息似乎会有所帮助......也许不是,只是一个想法。

编辑:到目前为止,一个答案提到我正在做的图书馆类型很重要。它是一个数据库库,最终与 STL 容器、可变参数(元组)、Boost Fusion 以及类似的东西一起工作。我可以看到这有什么关系,但我也对确定走哪条路的经验法则感兴趣。

0 投票
4 回答
638 浏览

c++ - qsort 在 C++ 中不适用于哪些类型?

std::sort通过 using 交换元素std::swap,后者又使用复制构造函数和赋值运算符,确保在交换值时获得正确的语义。

qsort通过简单地交换元素的底层位来交换元素,忽略与您正在交换的类型相关的任何语义。

即使qsort不知道要排序的类型的语义,它仍然可以很好地处理非平凡的类型。如果我没记错的话,它适用于所有标准容器,尽管它们不是 POD 类型。

我认为qsort在一个类型上正确工作T的先决条件T是 /trivially 可移动 /。在我的脑海中,唯一不能轻易移动的类型是那些具有内部指针的类型。例如:

如果你对一个数组进行排序,NotTriviallyMovable那么m_someElements 最终会指向错误的元素。

我的问题是:还有哪些其他类型不适用qsort

0 投票
1 回答
151 浏览

c# - 使用泛型

我有一堂课是这样的:

我只想创建另一个具有名称的类: myName.cs 在 myName.cs 中并想调用上面的 AddName 方法。你知道该怎么做吗?

先感谢您

0 投票
2 回答
1235 浏览

c++ - 如何创建一个包含每种对象的容器?

我试图为可以附加到我的对象的可能元数据创建一个容器。我可以保证每个类最多有一个对象附加到我的班级,但附加不同类型的对象没有限制。例如,我不能将两个实例附加wordInfo到一个对象,但实例wordInfophraseInfo类可以同时附加到一个对象。这是我到目前为止所做的。

上面的代码有一个编译错误:没有定义less运算符,std::type_info所以我专门定义了一些less类,std::type_info并将其作为map类的第三个模板参数传递,如下所示:

但是后来我遇到了另一个我不知道如何解决的错误,它std::type_info有私有构造函数甚至私有复制构造函数,所以我什至不能从中派生一些类。知道如何解决这个问题吗?或任何其他可能的方式来创建我的object课程?

0 投票
3 回答
61134 浏览

c++ - 嵌套名称说明符

我有一个像这样的代码:

它在 MSVC 下成功编译(并且可以工作),但 gcc 抱怨语法无效:

我做错了什么?

0 投票
2 回答
532 浏览

visual-studio-2010 - 函数声明中的 static_assert

我有一个非常简单的功能,使用static_assert. 问题是我想了解static_assert函数声明中涉及的行为——特别是推断返回类型。似乎没有任何地方可以插入,static_assert这样我就可以在编译器无法推断出返回类型之前触发它。

到目前为止,我将返回类型推导和静态断言放在一个结构中。这将触发断言,这很好,但它仍然会在类型推导上产生错误,这是我想要消除的噪音。

0 投票
4 回答
251 浏览

c++ - 递归泛型函数用作谓词,编译失败

我正在编写一个函数来比较两个列表的内容。元素的顺序无关紧要,所以我在比较之前对它们进行了排序。列表可以是普通类型list<int>,也可以是列表列表list<list<int> >

这是一个完整的精简示例:

这在 GCC 4.3.3 中编译,但在 Visual Studio 2008 中,它在我调用的地方给出了以下编译错误lhs.sort()

有什么建议么?

0 投票
4 回答
7047 浏览

haskell - Haskell 的 Data.Typeable 是什么?

我遇到了对 Haskell's 的引用Data.Typeable,但我不清楚为什么要在我的代码中使用它。

它解决了什么问题,如何解决?

0 投票
3 回答
1512 浏览

javascript - Javascript 不支持参数多态性(通用编程)?

我找不到任何关于 Javascript 通用编程的信息。所以我认为它不受支持。这是真的吗?有什么可以接近的吗?

参数多态 http://en.wikipedia.org/wiki/Parametric_polymorphism

通用编程 http://en.wikipedia.org/wiki/Generic_programming