问题标签 [custom-compare]

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 回答
3261 浏览

c++ - 键相等时 std::multimap 的自定义比较函数

我想为std::multimap. 我想做的是比较,以防它们相等,然后比较。我试图通过重载operator()结构并将函数对象作为std::multimap构造函数中的第三个参数传递来做到这一点。

如果两者都是 int,我如何访问值,而不仅仅是键?

0 投票
0 回答
89 浏览

c++11 - 没有定义嵌套类的优先级队列的自定义比较器

我有一个名为 getout 的类(没有构造函数)。在那个类中,我有一些私有变量,它们是优先级队列。使用我应该创建的自定义比较器函数初始化优先级队列:

我知道可以使用类或结构来编写自定义比较器。但是我不能这样做(我确定有办法)。为什么在这个比较器中我使用与我的班级有关的函数。我决定把我的比较器写成一个普通的 bool 函数,如下所示:

我正在使用的与我的班级有关的函数是 get_row()、get_col()。我不想通过使它们成为我的 tile 结构的成员变量来解决这个问题。

如何定义布尔函数形式的优先级队列比较器?

一切都在我的课堂上。

我努力了:

但我收到错误“未知类型名称小于”。我是否正确实现了上述代码?还有其他方法可以做到这一点吗?

(包括所有必要的库)

谢谢!!

0 投票
3 回答
478 浏览

c++ - 如何将 priority_queue 与类实例的非静态比较方法一起使用?

假设我有一个像这样的简单类:

而不是 a std::vector,我想将值输入 a std::priority_queue。而不是返回.front()值,我想基于自定义比较函数.get().top()值。priority_queue假设这个自定义比较被计算为 value 和 instance 之间的绝对差reference

不知道如何std::priority_queue在我的类属性中声明。

我努力了:

接着:

我也尝试过std::function这样,但这会引发多个错误:

但这不起作用(参见Repl.it)。

知道如何解决这个问题吗?

0 投票
2 回答
95 浏览

java - 编写 compareTo 的正确实现

现在我想重写compareTo这个类的方法,这样如果我有以下对象List,那么在排序之后,对象应该是.CharacterIndex[('y', 1), ('x', 2), ('b', 3), ('a', 3)][('b', 3), ('a', 3), ('x', 2), ('y', 1)]

排序策略:

索引不同的对象可以被打乱(并且应该仅根据字符的值进行排序)。具有相同索引的对象在排序后应保持其相对顺序。

再举一个例子:

对于[('y', 1), ('w', 2), ('x', 3)]排序列表应该是[(w, 2), (x, 3), (y, 1)]而不是[(x, 3), (w, 2), (y, 1)]

我的尝试:

但是这种方法给了我一个例外:

我看到了这个。但我无法清楚地理解为什么我会得到这个异常。

有没有更好的方法来List<CharacterIndex>使用上述给定的策略进行排序?

0 投票
2 回答
140 浏览

java - Collections.sort 不改变列表

我有一个游戏列表,我希望按他们的得分数量(按降序排列)进行排序。我为此目的编写了这段代码;

但是,当我检查调试器时,我发现列表根本没有改变。

0 投票
3 回答
1371 浏览

c++ - 如何在不重载 `operator()`、`std::less`、`std::greater` 的情况下为`std::multiset` 提供自定义比较器?

我想要以下代码的自定义比较器。但是,我不允许超载 operator(), std::less, std::greater.

我尝试使用 lambda 来实现这一点,但gcc不允许我auto用作非静态成员。还有其他方法可以使这项工作吗?

编辑:使用 lambda

错误:

0 投票
2 回答
1066 浏览

c++ - 为什么我们不能使用 `std::multiset` 和自定义比较 lambda 作为 `std::map` 的值?

这是关于如何在不重载 `operator()`、`std::less`、`std::greater` 的情况下为`std::multiset` 提供自定义比较器的后续问题

我试图通过以下方式解决。

基本的

可以为类的成员提供自定义比较 lambda 函数(自起),std::multiset如下所示:

很简单。

我的情况

Test班级成员是

我尝试使用std::multisetwith custom

  • 函子Compare(案例 - 1)
  • std::greater<> (案例 - 2)
  • lambda 函数(案例 - 3)

前两个选项是成功的。但是 lambda 作为自定义比较函数的情况不起作用。这是 MCVC:https ://godbolt.org/z/mSHi1p

错误信息:

听起来我试图默认构造传递的 lambda,这在之前是不可能的

如果是这样的话,它发生在哪里?是否可以在的范围内使用 lambda compare 函数来解决这个问题

0 投票
0 回答
40 浏览

c++ - 为什么这个矢量矢量的简单自定义比较器会产生崩溃?

当我在 [20000][3] 形式的 bks(向量的向量)上调用 std::sort 时,以下代码崩溃。在对 compBks 进行 20000 次调用后,比较器 compBks() 似乎在大小为 0 的 v1 和大小为 3 的 v2 上被调用,这可能导致崩溃。

但是为什么用无效的 v1 调用 compBks?

任何原因?

崩溃是:运行时错误:引用绑定到“value_type”类型的空指针(stl_vector.h)

就在崩溃之前,compBks() 将 v1.size 打印为 0,将 v2.size 打印为 3。

如果为 bks 正确调用 std::sort,为什么 v1 的大小会为 0?

0 投票
1 回答
2673 浏览

sorting - 如何根据自定义比较器对 Key 上的 Hashmap 进行排序

我收到了一个通用过程的哈希图,我需要使用自定义比较器对 Key 进行排序。

以下是我尝试过的,但它似乎不起作用 - 它没有对键进行排序。

地图的键的形式为长字符串短示例:(11169-SW-1 / 11169-SW-2 / 11132-SH-2 / 11132-SH-7 / 11132-SH-1)。字符串比较不起作用,因为我需要它用于数字部分,所以我定义了一个自定义比较器。我意识到需要清理自定义比较器代码 - 例如需要合并多个返回语句并且需要进行清理,但是一旦我让它工作,我就可以这样做。

我该怎么做?

自定义比较器定义如下

谢谢

0 投票
3 回答
681 浏览

c++ - 如何根据第二个元素对 std::set 进行排序?

给定n二维空间中的点,按升序对所有点进行排序。

输入规格

第一行包含一个整数t,即测试用例的数量。然后对于每个测试用例,第一行包含一个整数n,即点数。然后接下来的n行包含两个整数xiyi 代表点。

输出规格

对于每个测试用例,打印点的排序顺序。输入约束:

注意:严格的时间限制。更喜欢scanf/ printf/BufferedReader而不是cin/ cout/ Scanner

样本输入

样本输出

我声明了 a ,现在如果键相等set,我想按降序(值)排序。这是我的代码:

我的输出

如果键相同,我希望键值按降序排序。