问题标签 [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.
java - 泛型对类
只是尝试我在过去的试卷中找到的这个问题,以便我可以为即将到来的 Java 考试做准备。
提供一个通用类 Pair 来表示成对的事物。该类应提供构造函数、获取对的第一个成员的方法、获取对的第二个成员的方法、设置对的第一个成员的方法、设置对的第二个成员的方法. 该类应该在两种类型上进行参数化,一种用于第一个成员,另一种用于该对的第二个成员。
这是这个问题的正确实现吗?
c++ - 通用/模板编程最佳实践:限制类型,或不限制类型
那是我的问题。我只是好奇关于限制可以传递给通用函数或类的类型的共识是什么。我想我在某个时候读过,如果你正在做通用编程,通常最好让事情保持开放而不是试图关闭它们(不记得源代码)。
我正在编写一个具有一些内部通用函数的库,我觉得它们应该只允许库中的类型与它们一起使用,因为这就是我要使用它们的意思。另一方面,我不确定我为锁定事物所做的努力是否值得。
有人可能对这个话题有一些统计资料或权威评论吗?我也对合理的意见感兴趣。希望这不会使这个问题完全无效:\
此外,这里是否有任何标签等同于“最佳实践”?我没有具体看到那个,但是能够为给定的 SO 主题提供所有最佳实践信息似乎会有所帮助......也许不是,只是一个想法。
编辑:到目前为止,一个答案提到我正在做的图书馆类型很重要。它是一个数据库库,最终与 STL 容器、可变参数(元组)、Boost Fusion 以及类似的东西一起工作。我可以看到这有什么关系,但我也对确定走哪条路的经验法则感兴趣。
c++ - qsort 在 C++ 中不适用于哪些类型?
std::sort
通过 using 交换元素std::swap
,后者又使用复制构造函数和赋值运算符,确保在交换值时获得正确的语义。
qsort
通过简单地交换元素的底层位来交换元素,忽略与您正在交换的类型相关的任何语义。
即使qsort
不知道要排序的类型的语义,它仍然可以很好地处理非平凡的类型。如果我没记错的话,它适用于所有标准容器,尽管它们不是 POD 类型。
我认为qsort
在一个类型上正确工作T
的先决条件T
是 /trivially 可移动 /。在我的脑海中,唯一不能轻易移动的类型是那些具有内部指针的类型。例如:
如果你对一个数组进行排序,NotTriviallyMovable
那么m_someElement
s 最终会指向错误的元素。
我的问题是:还有哪些其他类型不适用qsort
?
c# - 使用泛型
我有一堂课是这样的:
我只想创建另一个具有名称的类: myName.cs 在 myName.cs 中并想调用上面的 AddName 方法。你知道该怎么做吗?
先感谢您
c++ - 如何创建一个包含每种对象的容器?
我试图为可以附加到我的对象的可能元数据创建一个容器。我可以保证每个类最多有一个对象附加到我的班级,但附加不同类型的对象没有限制。例如,我不能将两个实例附加wordInfo
到一个对象,但实例wordInfo
和phraseInfo
类可以同时附加到一个对象。这是我到目前为止所做的。
上面的代码有一个编译错误:没有定义less运算符,std::type_info
所以我专门定义了一些less类,std::type_info
并将其作为map类的第三个模板参数传递,如下所示:
但是后来我遇到了另一个我不知道如何解决的错误,它std::type_info
有私有构造函数甚至私有复制构造函数,所以我什至不能从中派生一些类。知道如何解决这个问题吗?或任何其他可能的方式来创建我的object
课程?
c++ - 嵌套名称说明符
我有一个像这样的代码:
它在 MSVC 下成功编译(并且可以工作),但 gcc 抱怨语法无效:
我做错了什么?
visual-studio-2010 - 函数声明中的 static_assert
我有一个非常简单的功能,使用static_assert
. 问题是我想了解static_assert
函数声明中涉及的行为——特别是推断返回类型。似乎没有任何地方可以插入,static_assert
这样我就可以在编译器无法推断出返回类型之前触发它。
到目前为止,我将返回类型推导和静态断言放在一个结构中。这将触发断言,这很好,但它仍然会在类型推导上产生错误,这是我想要消除的噪音。
c++ - 递归泛型函数用作谓词,编译失败
我正在编写一个函数来比较两个列表的内容。元素的顺序无关紧要,所以我在比较之前对它们进行了排序。列表可以是普通类型list<int>
,也可以是列表列表list<list<int> >
。
这是一个完整的精简示例:
这在 GCC 4.3.3 中编译,但在 Visual Studio 2008 中,它在我调用的地方给出了以下编译错误lhs.sort()
:
有什么建议么?
haskell - Haskell 的 Data.Typeable 是什么?
我遇到了对 Haskell's 的引用Data.Typeable
,但我不清楚为什么要在我的代码中使用它。
它解决了什么问题,如何解决?
javascript - Javascript 不支持参数多态性(通用编程)?
我找不到任何关于 Javascript 通用编程的信息。所以我认为它不受支持。这是真的吗?有什么可以接近的吗?