标签: multiset

c ++中的multiset

我已经在另一个问题中询问了multiset中的问题,但现在我发现我需要一个体面的理解,并且在互联网上找不到更复杂的例子.

你可以解释一下,也许是示例,multiset<A,B>A和B的作用和功能是什么,还有什么可以省略?我可以将A或B放到某个变量中吗?我真的很感激一些简短的例子或参考,

c++ stl multiset

6
推荐指数
1
解决办法
2万
查看次数

在POSTGRES中可以使用Oracle Cast和MULTISET

我一直在研究从oracle数据库数据库生成xml的查询

其中"列"是一种类型

CREATE OR REPLACE TYPE "column" AS OBJECT
                  ("coulmnname" VARCHAR2 (30), "datatype" VARCHAR2 (30))
Run Code Online (Sandbox Code Playgroud)

和col_list_t是类型

CREATE OR REPLACE TYPE col_list_t AS TABLE OF "column"
Run Code Online (Sandbox Code Playgroud)

  SELECT CAST (
                      MULTISET (
                           SELECT "column" (B.COLUMN_NAME, B.DATA_TYPE)
                             FROM all_tab_columns b, all_tables c ,all_tables a
                            WHERE     b.TABLE_NAME = a.TABLE_NAME
                                  AND b.table_name = c.TABLE_NAME
                                  AND B.OWNER = C.OWNER
                                  AND c.OWNER = USER)AS col_list_t)  from dual 
Run Code Online (Sandbox Code Playgroud)

问题是这必须转换成postgres,因为CAST和MULTISET在postgres中是不可用的,所以有什么方法可以在postgres语法中做到这一点

oracle postgresql casting multiset

6
推荐指数
1
解决办法
1932
查看次数

C++ std :: set和std :: multiset

在C++中默认情况下都std::setstd::multisetstd::less<T>作为他们的比较.任何人都可以解释如何std::multiset允许重复,std::set不是吗?

c++ containers std set multiset

6
推荐指数
1
解决办法
3523
查看次数

c ++ map/set iterator not dereferencable

我想问你一个提示,因为我是初学者,在互联网上找不到合适的答案.我收到此错误: debug assertion failed - map/set iterator not dereferencable 在看起来像这样的行:

pointA = active->pointNext(timeNext);
Run Code Online (Sandbox Code Playgroud)

使用函数pointNext(),因为我看到一切正常,有什么问题是活跃的,我有:

active = setS.data.end();
Run Code Online (Sandbox Code Playgroud)

更多信息:

activemultiset <classA,classB :: classC> :: const_iterator

setS具有:setS.Q,setS.W,setS.TsetS.data,其中setS.data在方括号内有0.当我在.cpp文件中有multiset迭代器声明时,在调试期间我无法进入以查看活动内部是什么,当它在.h文件中时,我可以.

在.cpp中我无法进入活动状态,因此可以想象它就像指针(迭代器)不能解除引用,因为内部是错误的.如果它是空的,即如果setS.data为空,该怎么办?或者里面有垃圾吗?

我知道之前在linux下运行的东西,是否有一些我必须改变才能在Windows上运行的功能?例如,将一些模板参数更改为仅一个?(正确地将setS.data归活动,因为我不确定 - 我是否正确地做到了?

对于这个相当混乱的帖子感到抱歉,我想加上我的猜测,如果他们错了,就会忽视他们.如果这里的某些内容不清楚或缺乏某些信息,我很乐意添加它.你能否告诉我什么原因可能导致我得到的失修错误,我应该在哪里寻找它?因为我被困住了,不知道该怎么办.

任何帮助非常感谢,谢谢!

c++ iterator multiset

5
推荐指数
1
解决办法
2万
查看次数

快速选择重复值

是否可以在O(n)上对多集执行第k个元素的搜索(值可以重复)?

因为据我了解的快速选择的想法,我必须使用一些支点来划分输入。然后,我有2个数组,我选择进行递归搜索取决于我要搜索的索引元素+两个数组的大小分别是多少:

1 7 8 5 3 2 4

假设数据透视为4,我正在搜索第二大元素。所以分区后我可能会得到像

1 3 2 4 7 8 5

因为正确的子数组由3个元素组成,如果我是正确的话,我仍然会尝试在正确的数组中找到第二大的数组?

但是,如果我以8为支点,我可能会得到类似

1 3 2 7 5 4 8

因此,我将尝试在左侧表格中找到最大的元素(适当地通过线性查找,但一般而言,我将采用左侧子数组并搜索元素-(|右侧子数组大小| + 1))

但是多集呢?假设我有数组:

4 5 6 7 7 7 4 3 2 1

我的枢纽是6搜索第三大元素,分区后我收到:

4 5 3 2 4 1 6 7 7 7

因此,如果我使用上面介绍的方法,我将尝试在右子数组上执行递归,而显而易见的第三大值是5,它在左边?

我想出的唯一解决方案是使用某些数据结构(例如BST,Set等)来过滤O(nlogn)重复项。然后使用O(n)快速选择。但是总的来说,它会给我非线性方法,这可以线性吗?


我还有一个额外的问题,如果无法完成分配内存该怎么办?我所能做的就是只使用局部整数+堆栈递归。这个问题可以在O(n)中解决吗?因为O(nlogn)可以通过排序+线性“通过计数”来完成。

algorithm selection multiset quickselect

5
推荐指数
1
解决办法
1910
查看次数

如何在入门值和计数上对Guava Multiset进行排序?

我有一个Guava,Multiset<Integer>并希望通过按(a)元素值和(b)元素计数排序的条目独立迭代.我用Simplest方法按元素频率的顺序迭代Multiset?

ImmutableMultiset<Integer> entryList = Multisets.copyHighestCountFirst(myIntegerMultiset);
for (Integer i : entryList) {
    System.out.println("I"+i);
}
Run Code Online (Sandbox Code Playgroud)

但这会返回所有条目,而我想要一个排序列表Multiset.Entry<Integer>(每个唯一值一个),这将允许我得到计数​​.

我想独立地得到相同的Multiset.Entry<Integer>排序列表<Integer>.

java sorting multiset guava

5
推荐指数
1
解决办法
3670
查看次数

Python计数器比较为袋型

我需要Python中的bag / multiset-like数据类型。我了解collections.Counter通常用于此目的。但是比较运算符似乎不起作用:

In [1]: from collections import Counter

In [2]: bag1 = Counter(a=1, b=2, c=3)

In [3]: bag2 = Counter(a=2, b=2)

In [4]: bag1 > bag2
Out[4]: True
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎是一个错误。我期望小于和大于运算符执行类似集合的子集和超集比较。但是,如果真是这样,那bag1 > bag2将是错误的,因为bag2其中包含一个额外的'a'。Counter对象上似乎也没有子集/超集方法。所以我有两个问题:

  1. 计数器对象使用什么比较逻辑?
  2. 如何比较计数器对象的子集,超集,适当子集和适当超集?

python comparison multiset python-collections

5
推荐指数
1
解决办法
1436
查看次数

JavaScript 中有类似 multiSet 的东西吗?

我知道JavaScript现在有sets,但是我想知道有没有什么东西可以实现multiSet的功能,或者有什么框架有我非常需要的multiset的功能。

或者我必须自己编写代码来研究红黑树

javascript set red-black-tree multiset

5
推荐指数
1
解决办法
2574
查看次数

查找两个数组之间的(multiset)差异

给定数组(比如行向量)A和B,如何找到一个数组C,使得合并B和C将得到A?

例如,给定

A = [2, 4, 6, 4, 3, 3, 1, 5, 5, 5];
B = [2, 3, 5, 5];
Run Code Online (Sandbox Code Playgroud)

然后

C = multiset_diff(A, B) % Should be [4, 6, 4, 3, 1, 5]
Run Code Online (Sandbox Code Playgroud)

(结果的顺序在这里无关紧要).

对于相同的A,如果B = [2, 4, 5],那么结果应该是[6, 4, 3, 3, 1, 5, 5].

(由于4A中有两个s,4B 中有一个,因此结果C中应该有2 - 1 = 1.4其他值类似.)

PS:请注意,这setdiff将删除2,3和5的所有实例,而在这里它们需要被删除,但是它们出现在B中很多次.


性能:我在本地运行了一些快速的基准测试,以下是未来参考的结果:

  • @ heigele的嵌套循环方法对于小长度的A(最多N = 50左右的元素)表现最佳.与下一个最佳方法相比,它对于小(N = 20)As来说好3倍,对于中等大小(N = 50)As 好1.5倍- …

arrays matlab multiset

5
推荐指数
2
解决办法
209
查看次数

有限多重集作为 Cubical Agda 中的 HIT

在 Cubical Agda 的标准库中,有一些有限的多重集,我在下面重现了它们的优雅定义:

{-# OPTIONS --cubical --safe #-}

open import Cubical.Foundations.Prelude

infixr 20 _?_

data FMSet (A : Set) : Set where
  []    : FMSet A
  _?_   : (x : A) ? (xs : FMSet A) ? FMSet A
  comm  : ? x y xs ? x ? y ? xs ? y ? x ? xs
  trunc : isSet (FMSet A)

_++_ : ? {A : Set} -> FMSet A ? FMSet A ? FMSet A …
Run Code Online (Sandbox Code Playgroud)

proof agda multiset cubical-type-theory homotopy-type-theory

5
推荐指数
1
解决办法
190
查看次数