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

c++ - 迭代`std::multiset`的独特元素

我所需要的只是知道某物是否存在以及它存在多少次。我将遍历现有事物并查询其中存在多少。

到目前为止,我的实现使用multiset,我执行以下操作:

澄清

我有一个向量things。但他们有时会重复这个值,我想迭代 unique things 并为每个独特的做一些事情。这个“东西”需要知道它thing出现在向量上的时间量。

我上面发布的代码是我现在解决问题的方法,它似乎不是做我想做的最优雅的方式。

我只是遵循 Stackoverflow 指南:我告诉我我的问题是什么,我告诉我(尝试过的)解决方案。

如果真的需要一个带问号的句子,你就去吧:有没有办法在 a 上迭代独特的元素multiset

0 投票
2 回答
3401 浏览

c++ - 使用迭代器从 STL 多重集中擦除元素

我在单独的数据结构中维护一组多集容器的迭代器。过了一会儿,我从这个数据结构中选择了一个迭代器,然后从多重集中删除了与该迭代器相关的元素。我首先使用这样的东西:

然而,事实证明第二个myints.erase (it);原因是分段错误。因此,我更改为以下代码并且它可以工作。我想知道这是否是好方法或者它是可行的undefined情况:

0 投票
2 回答
2927 浏览

c++ - 将向量分配给多重集

将 std::vector 分配给 std::multiset 有什么好的方法吗?当然除了迭代。我看到在 C++11 中有类似初始化列表的东西,也许它可以以某种方式使用?

0 投票
1 回答
1336 浏览

scala - 将 multiset/bag 实现为 Scala 集合

这个问题的启发,我想在 Scala 中实现一个Multiset。我想MultiSet[A]

  • 支持加、删、并、交、差
  • 是一个A => Int,提供每个元素的计数

这是一种方法,扩展Set

扩展Set很好,因为它意味着MultiSet自动获取联合、差异等的定义。以下所有内容都将成立:

但是,我将不得不重写一些继承的方法,例如unionintersect因为它们会对多重集做错误的事情,例如以下内容不成立:

扩展的另一个问题Set是我不能MultiSet成为一个,A => Int因为我会得到错误:illegal inheritance; class MultiSet inherits different type instances of trait Function1: A => Int and A => Boolean. 我可以通过声明一个单独的count方法来解决这个问题,但我真的更喜欢这个类只是一个A => Int.

另一种方法是继承 from Map[A, Int],这会给我A => Int我想要的,但是我必须定义我自己的所有++,--等,因为在Map这些中将定义(A, Int)成对,但对于多集,它们需要定义在 As.

我想第三种方法是同时放弃Setand Map,只实现一个新的子类Iterable或其他。

你会推荐什么?适合MulitSetScala 集合框架的最佳方法是什么?

0 投票
5 回答
5380 浏览

python - 测试集合是否是子集,考虑集合中每个元素的数量(多重性)

我知道我可以测试 set1 是否是 set2 的子集:

但以下也是正确的:

我如何让它考虑集合中的元素出现的次数,以便:

我知道我可以做类似的事情:

但我想知道是否有更简洁的东西set(A).issubset(B,count=True)或一种远离列表推导的方法。谢谢!

0 投票
3 回答
139 浏览

scala - 将 TraversableOnce[T] 转换为 Multiset-like 或 Histogram-ish Map[T, Int] 的最简洁方法是什么?

我想将 Traversable[T] 转换为带有计数的 Map[T, Int] 直方图。我希望结果是一个不可变的 Map ,它与我会得到的结果相匹配:

但看起来这在空间或时间上效率不高......因为groupBy维护对可遍历中的每个元素的引用,这在具有少量唯一键的大型可遍历上表现不佳。我真的想要更像这样的东西:

有没有一种库方法可以给我这个结果(理想情况下,可以很好地与并行集合一起使用)?

0 投票
1 回答
953 浏览

c++ - C ++:使用std :: function在multiset中插入元组,并保持顺序

很简单,这段代码有什么问题?

g++ 4.7.2简单地使用 - with 命令编译g++ -std=c++11 main.cpp

我为什么要这样做?

程序是实时运行的,add_even_handler函数中包含一个类型double为 called的值time(注意time这里的变量与时钟或实际时间无关,它只是一个 double 类型的递增对象)。因此,当用户添加一些事件时,它将在某个时间被调用。

标准下的多集容器将按某种顺序整理对象(通常,如果不总是,std::less<T>)。然后循环遍历容器,我可以Event在不断增加的变量变化时调用double time

问题是什么?

正如 KyleC 所指出的(见他的回答),std::function<>编译器不理解在​​什么过程中订购

我是如何克服这个问题的

你每天学习新的东西。上面的代码是最初混合std::multisetstd::tuple. std::map<T,S>orstd::multimap<T,S>也按关联的排序key,在这种情况下是 type double,默认情况下它也是std::less<T>。所以代替上面的,我做了类似下面的事情

这只是写在这里,以防它可能对人们有所帮助,尽管很明显但仍然如此。

0 投票
1 回答
17140 浏览

python - 如何找到计数器的第二个最大值 - Python

可以这样访问计数器的最大值:

如果我想要一个按降序计数的排序计数器怎么办?

我如何访问第二个最大值,或者第三个或第 N 个最大值键?

0 投票
1 回答
1848 浏览

c++ - 多集迭代器之间的距离

我们能找到复杂度小于 O(n) 的多重集中的两个迭代器之间的距离吗?
我尝试使用迭代器标头提供的 std::distance() 函数。但它的内部实现对于多集迭代器是 O(n)。

0 投票
0 回答
184 浏览

c++ - 使用多组生日对象编写生日日历但排序不起作用

我正在编写一个包含多组生日对象的生日日历。我的比较功能排序不正确,我无法按名称搜索 b 日。

这是我的比较功能。我希望能够按生日或部分生日和全名搜索数据库。我无法按名称搜索部分工作。

我已经为 multiset 使用了类型 def 并在我的定义中使用它来包含对象函子,但为了简洁起见,将其从这段代码摘录中删除。