问题标签 [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.
c++ - 键相等时 std::multimap 的自定义比较函数
我想为std::multimap
. 我想做的是比较键,以防它们相等,然后比较值。我试图通过重载operator()
结构并将函数对象作为std::multimap
构造函数中的第三个参数传递来做到这一点。
如果两者都是 int,我如何访问值,而不仅仅是键?
c++11 - 没有定义嵌套类的优先级队列的自定义比较器
我有一个名为 getout 的类(没有构造函数)。在那个类中,我有一些私有变量,它们是优先级队列。使用我应该创建的自定义比较器函数初始化优先级队列:
我知道可以使用类或结构来编写自定义比较器。但是我不能这样做(我确定有办法)。为什么在这个比较器中我使用与我的班级有关的函数。我决定把我的比较器写成一个普通的 bool 函数,如下所示:
我正在使用的与我的班级有关的函数是 get_row()、get_col()。我不想通过使它们成为我的 tile 结构的成员变量来解决这个问题。
如何定义布尔函数形式的优先级队列比较器?
一切都在我的课堂上。
我努力了:
但我收到错误“未知类型名称小于”。我是否正确实现了上述代码?还有其他方法可以做到这一点吗?
(包括所有必要的库)
谢谢!!
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)。
知道如何解决这个问题吗?
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>
使用上述给定的策略进行排序?
java - Collections.sort 不改变列表
我有一个游戏列表,我希望按他们的得分数量(按降序排列)进行排序。我为此目的编写了这段代码;
但是,当我检查调试器时,我发现列表根本没有改变。
c++ - 如何在不重载 `operator()`、`std::less`、`std::greater` 的情况下为`std::multiset` 提供自定义比较器?
我想要以下代码的自定义比较器。但是,我不允许超载 operator()
, std::less
, std::greater
.
我尝试使用 lambda 来实现这一点,但gcc不允许我auto
用作非静态成员。还有其他方法可以使这项工作吗?
编辑:使用 lambda
错误:
c++ - 为什么我们不能使用 `std::multiset` 和自定义比较 lambda 作为 `std::map` 的值?
这是关于如何在不重载 `operator()`、`std::less`、`std::greater` 的情况下为`std::multiset` 提供自定义比较器的后续问题 ?
我试图通过以下方式解决。
基本的
可以为类的成员提供自定义比较 lambda 函数(自c++11起),std::multiset
如下所示:
很简单。
我的情况
Test
班级成员是
我尝试使用std::multiset
with custom
- 函子
Compare
(案例 - 1) std::greater<>
(案例 - 2)- lambda 函数(案例 - 3)
前两个选项是成功的。但是 lambda 作为自定义比较函数的情况不起作用。这是 MCVC:https ://godbolt.org/z/mSHi1p
错误信息:
听起来我试图默认构造传递的 lambda,这在c++20之前是不可能的。
如果是这样的话,它发生在哪里?是否可以在c++11到c++17的范围内使用 lambda compare 函数来解决这个问题?
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?
sorting - 如何根据自定义比较器对 Key 上的 Hashmap 进行排序
我收到了一个通用过程的哈希图,我需要使用自定义比较器对 Key 进行排序。
以下是我尝试过的,但它似乎不起作用 - 它没有对键进行排序。
地图的键的形式为长字符串短示例:(11169-SW-1 / 11169-SW-2 / 11132-SH-2 / 11132-SH-7 / 11132-SH-1)。字符串比较不起作用,因为我需要它用于数字部分,所以我定义了一个自定义比较器。我意识到需要清理自定义比较器代码 - 例如需要合并多个返回语句并且需要进行清理,但是一旦我让它工作,我就可以这样做。
我该怎么做?
自定义比较器定义如下
谢谢
c++ - 如何根据第二个元素对 std::set 进行排序?
给定n
二维空间中的点,按升序对所有点进行排序。
输入规格:
第一行包含一个整数t
,即测试用例的数量。然后对于每个测试用例,第一行包含一个整数n
,即点数。然后接下来的n
行包含两个整数xi
,yi
代表点。
输出规格:
对于每个测试用例,打印点的排序顺序。输入约束:
注意:严格的时间限制。更喜欢scanf
/ printf
/BufferedReader
而不是cin
/ cout
/ Scanner
。
样本输入:
样本输出:
我声明了 a ,现在如果键相等set
,我想按降序(值)排序。这是我的代码:
我的输出
如果键相同,我希望键值按降序排序。