问题标签 [multiset]

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 投票
2 回答
3102 浏览

c++ - C++:在多集容器中使用自己的类

起初我是新来的,英语不是我的母语,所以对任何语法错误表示歉意,但我发现这个社区真的很好,所以我会尽可能准确地提出我的问题。

我想将我自己的类对象添加到一个 stl 容器多重集中,并想用我自己在我的类中定义的重载的 less 运算符对其进行排序。我真的尝试了几种解决方案,但都没有真正奏效,所以我希望有人能给我一些有用的提示来解决它。

这是我对类定义的一般想法:

这是我的第一次尝试,但没有奏效,所以我也尝试将重载的运算符声明为友元方法,但它也没有奏效。

这是我的主要功能的简短代码摘录:

过了一会儿,我开始调试我的代码并试图找出问题所在,我遇到了以下让我有点怀疑的事情。

从stl中提取代码:

我在这一行设置了一个断点并观察了程序在这里做什么,我不知道为什么,但它只比较两个对象的地址并返回所以总是假的。尽管运算符存在并且 _Left 和 _Right 变量包含我的对象的地址,但它从不调用我重载的 less 运算符。

如果有人可以帮助我,我将不胜感激。

最好的问候

汤姆

0 投票
1 回答
831 浏览

sql - Oracle SQL 中多集映射的意外结果

请帮我确认下面解释的行为是一个错误,或者清楚地解释为什么它是正确的。我很可能误解了一些概念,但现在对我来说它看起来像一个错误。

下面的所有示例都尽可能简化以展示问题的核心。实际情况非常复杂,因此只能接受与查询构造原理相关的一般答案和变通方法。
欢迎您在评论中提出澄清问题,我会尽力回答。
感谢您的关注。:)

问题

为什么在上一个示例(示例 5)collection中的子查询中的实例 (select count(1) ...从第一行映射到表的所有行,而预期结果是将每个collection实例映射到它自己的行?
同时collections用于cardinality(...)表达方式选择得当。如果以这种方式构造在查询中使用或作为查询的一部分的
集合,则存在相同的情况(示例中未涵盖) 。fromwhere

测试架构设置

( SQLFiddle )

表数据:

例子

示例 1 ( SQLFiddle ) - 使用嵌套表字段 -好的

结果:

示例 2 ( SQLFiddle ) - 单独使用构造的源数据 -好的

结果:

示例 3 ( SQLFiddle ) - 使用构造的多集连接表WITH-确定

结果:

示例 4 ( SQLFiddle ) - 使用 WITH + 子查询中构造的多集连接表 -确定

结果:

示例 5 ( SQLFiddle ) - 使用动态构建的多集连接表 -失败

结果(set_tab_count列中的所有值都相同 -错误!):

Oracle 版本信息

实例 1

实例 2

SQLFiddle将所有查询放在一起。

0 投票
1 回答
170 浏览

c++ - 共享指针谓词;

我真的很难理解这些声明

如果我在 decltype(compare) 之后没有给出指针,它会给出错误吗?为什么会出错?为什么我应该提供 bool* 而不是 bool 作为算法函数的谓词,再次在 item { compare } 的花括号中给出 compare 的好处是什么?它会按排序顺序在多集中插入对象吗?如果我没有给出 { compare } 会发生什么?

0 投票
5 回答
28096 浏览

c++ - 是否有 C++ 的 Python 等价物“multiset“?

我正在将一些 C++ 代码移植到 Python 中,其中一个数据结构是一个多重集,但我不确定如何在 Python 中对此进行建模。

让我们ms成为 C++multiset<int>

如何ms使用(发布一些示例)

0 投票
2 回答
1821 浏览

java - 将字符串转换为 HashMap/MultiSet?

将长字符串转换为包含单词和计数的数据结构的最佳方法是什么。

我会做 .split(" ") 在空格上拆分并大概制作一个数组列表,然后可能会通过数组列表并将每个项目添加到哈希图或多重集?我不确定最好的方法是什么/是否可以直接使用某种哈希图来完成,而无需先创建数组列表。

谢谢!

0 投票
1 回答
1972 浏览

python - Generate all possible permutations of subsets containing all the element of a set

Let S(w) be a set of words. I want to generate all the possible n-combination of subsets s so that the union of those subsets are always equal to S(w).

So you have a set (a, b, c, d, e) and you wan't all the 3-combinations:

((a, b, c), (d), (e))

((a, b), (c, d), (e))

((a), (b, c, d), (e))

((a), (b, c), (d, e))

etc ...

For each combination you have 3 set and the union of those set is the original set. No empty set, no missing element.

There must be a way to do that using itertools.combination + collection.Counter but I can't even start somewhere... Can someone help ?

Luke

EDIT: I would need to capture all the possible combination, including:

((a, e), (b, d) (c))

etc ...

0 投票
1 回答
2049 浏览

c++ - Set vs. Multiset

I'd like to store (about 100 to 1000) different relations of type <Object A, Relation R, Object B> in a set or multiset. I'd like to be able to search for A and (A,R), but not for (A,R,B) (and there will be only a few (<5) relations with the same A and R, so linear search if fine then).

Is it better to store the relations in a set (ordered by A, R and B) or to store them in a multiset ordered by A and R?

Edit: I've looked into hash tables, but their iteration isn't as fast as (ordered) set iteration, and the pattern matching requires a lot of iteration too. (It will have to search once to find the start of the iteration and then iterate until all relations with the same object A are done.)

Thanks, Ragnar

0 投票
4 回答
9852 浏览

c++ - 在 C++ 中使用自定义比较函数初始化多重集

考虑以下比较函数:

现在的想法是初始化一个类型的多重集,std::shared_ptr<myObject>它使用上述函数对元素进行排序。所以从我读的书中应该这样做:

问题:

我的问题是,在声明中,我理解传递了一个函数指针来引用比较函数,但是为什么我们用 初始化集合{compare}?它的重要性是什么,为什么有必要这样做?

0 投票
1 回答
474 浏览

database - PLSQL - 合并表变量

我有一个函数 Func_A 返回一个表变量。现在我想创建另一个函数 Func_B 多次调用 Func_A 并返回 Func_A 的所有结果组合。但只返回 Func_A 的最后一个结果。如何将函数 a 的所有结果合并在一起?

这应该是最有效的方法:

0 投票
1 回答
577 浏览

c++ - 在多集中擦除

我是 STL 容器的新手,现在我在使用 Multiset 时遇到了一些问题。问题在于以下两个集合:

orderedCol 维护一些具有两个公共整数字段的数据元素:id 和 count。我按计数元素订购该结构。我可能需要从该元素中增加和减少 count 字段,因此,为了保持排序,我使用了第二个集合(referenceCol),它由 id 字段索引并保存对 orderedCol 的引用(迭代器)集合,所以每当我需要刷新计数时,我都可以快速从orderedCol中删除元素(通过在referenceCol中引用它),刷新它,然后根据顺序将它再次插入到适当的位置。

referenceCol 是在我的类的构造函数中创建的,它有两个字段:validReference (bool) 指示迭代器引用是否有效,以及 multiset<....>::iterator 变量。

以下方法处理影响这两个集合的递增和递减操作:

问题是当我尝试在增量操作中擦除迭代器时出现错误(查看代码中的 BOOM 注释)。我遇到的错误是这样的:

“映射/设置擦除迭代器超出范围”

我唯一想到的是,也许在擦除元素时我可能会使其他迭代器无效,所以这些引用不再存在,但我用谷歌搜索了它,我发现对于多集,擦除操作只会使擦除元素无效,但是没有其他人......我还检查了在我运行的示例中我没有擦除有问题的索引的元素。

请帮忙!对不起我的英语不好!哦,我愿意接受有关按顺序完成元素“刷新”的更好策略的建议:)

提前致谢!