Generics 当普通的Set类还不够的时候:一个周末战士';s项目 反思集 介绍 C++、C语言、java和Python中有定义对象无序集合的类,分别为。这种想法的问题在于,这些类适用于“小”离散集。有时我想要一个显示属性的集合,但是如果我列出该集合中所有可能的元素,我将耗尽计算机内存。这方面的一个例子如下: 考虑所有双精度浮点的集合。构建这样一个集合将耗尽大多数计算设备的内存,并且需要花费大量时间来填充

Generics 当普通的Set类还不够的时候:一个周末战士';s项目 反思集 介绍 C++、C语言、java和Python中有定义对象无序集合的类,分别为。这种想法的问题在于,这些类适用于“小”离散集。有时我想要一个显示属性的集合,但是如果我列出该集合中所有可能的元素,我将耗尽计算机内存。这方面的一个例子如下: 考虑所有双精度浮点的集合。构建这样一个集合将耗尽大多数计算设备的内存,并且需要花费大量时间来填充,generics,collections,set,implementation,wiki,Generics,Collections,Set,Implementation,Wiki,像这样的集合还有很多例子,通常无序的对象集合既不理想也不实用。一个集合不需要(或要求)大量的内存需求,而当我们考虑大集合时,C++、C语言、java和Python中的集合类型需要大量的内存。为什么不创建一个更通用的类(或某种类型的对象),而不是像上面那样使用常规的无序离散集合呢 请原谅我在描述这一点时,我的词汇量不恰当,我不是计算机科学家。我只是一个数学方面的低级研究生,想模仿数学中集合的思想。例如,实数是一个集合,它包含的元素比宇宙中亚原子粒子的数量还要多。此外,不可能通过将实数的每个元素放进

像这样的集合还有很多例子,通常无序的对象集合既不理想也不实用。一个集合不需要(或要求)大量的内存需求,而当我们考虑大集合时,C++、C语言、java和Python中的集合类型需要大量的内存。为什么不创建一个更通用的类(或某种类型的对象),而不是像上面那样使用常规的无序离散集合呢

请原谅我在描述这一点时,我的词汇量不恰当,我不是计算机科学家。我只是一个数学方面的低级研究生,想模仿数学中集合的思想。例如,实数是一个集合,它包含的元素比宇宙中亚原子粒子的数量还要多。此外,不可能通过将实数的每个元素放进一个集合中,如C++中的C、C、java和Python中的集合构造,来构造实数。p> 替代集合对象方案 集合对象建议包括两部分:该集合的定性描述和集合操作的描述

定性描述 一套由两部分组成。泛型对象类型和属性

  • 通用对象类型:集合的元素必须来自域。在编程中,域通常是某种类型的对象类型。我将给出一些编程中常见的对象类型示例:

    • 基本数据类型:int、bool、float、double、char、string等
    • 固定数组:具有一定固定大小的数据。这里有一些例子
    • 动态数组:向量、列表等
    • 结构
    • 班级
    • 名称空间
    • void(我的意思是我可以用任何类型的对象构造任意的集合)
    • 返回特定类型对象的函数
    • 具有特定输入质量的函数(例如,具有3个输入的任何函数,或具有一个整数输入的函数,等等)
    • 另一套
    • 等等
  • 集合的属性:该属性确定泛型对象类型(1)的元素是否是集合的一部分。属性是一个返回true或false的函数。真的意思是它是集合的一部分,如果它不是集合的一部分,则为假

  • (2)的优点是属性函数可以包含一组离散的对象,如我们已经在C++、C语言、java和python中的用法,或者我们<强>可以< /St> >检查元素是否显示属性(例如,对象x是浮点?)。property函数可以有任意多个输入来确定元素是否为集合的属性(即返回true/false)。还应该考虑,属性函数应该足够灵活,以处理任何对象作为输入。例如,当集合的属性函数检查马对象是否高于6英尺时,可以尝试测试Cat对象是否是集合的元素。在这种情况下,属性函数可能会抛出异常,但属性函数仍应返回false

    集合运算
  • 联合:一种以两个或更多集合作为输入的函数。输入的属性函数分别为P1、P2、…、Pn。Union函数返回一个属性函数为P1或P2或---或Pn的新集合
  • 交叉点:一种以两个或更多集合作为输入的函数。输入的属性函数分别为P1、P2、…、Pn。交集函数返回一个新的集合,其属性函数为P1和P2以及---和Pn
  • 赞美:只有输入的函数是一个集合。让输入集的属性函数为P1。如果P1返回true,则恭维函数返回一个新集合,其属性函数返回false;如果P1为false,则属性函数返回true。也就是说,这个新集合的属性函数不是P1
  • 相对恭维语:一种以两个集合作为输入的函数。输入的属性函数分别为P1、P2。相对互补函数返回一个属性函数为(P1而非P2)的新集合
  • 笛卡尔乘积:作为输入提供给一个或多个集合。该函数生成集合的第二个副本;复制的集按其对应的原始输入集的相同顺序放置在列表或数组中
  • 此集合实现的缺点是,没有确定的方法来显示对于任何两个集合,一个集合是另一个集合的子集(使用通用对象类型和属性)。也许计算机科学(和数学)中最著名的例子就是P=NP。为了使这一点起作用,我们需要证明,对于任意两个集合的任意两个属性函数P1和P2,P1意味着P2或P2意味着P1。这并不总是容易做到的。我愿意在我想要构建的这个集合对象中牺牲这个能力

    要完成的一系列目标 我对定性描述部分中的set对象或这些编程语言中的set选项的开发还不够精通。我呼吁StackOverflow社区帮助我开发:

  • 开发集合对象和集合操作,如ab所述