vector<pair<int,int> > v;
for(i=0;i<5;i++){
cin>>b>>c;
v.push_back(make_pair(b,c));
}
sort(v.begin(),v.end());
Run Code Online (Sandbox Code Playgroud)
是否可以为排序函数编写一个比较器,以便v[i].first按升序排序,并且对于 的相似值v[i].first,v[i].second按降序排序?
像:-
i/p:
13 10
44 15
13 15
13 99
6 45
Run Code Online (Sandbox Code Playgroud)
输出:
6 45
13 99
13 15
13 10
44 15
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Comparator如下所示的排序集.
Set seatSet = tc.getTheatreSeat();
List listArr = new ArrayList(seatSet);
Collections.sort(listArr, new Comparator() {
public int compare(Object arg0, Object arg1) {
TheatreSeat r1 = (TheatreSeat) arg0;
TheatreSeat r2 = (TheatreSeat) arg1;
if (r2.getId() < r1.getId()) {
return 1;
}
return 0;
}
});
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我的代码有什么问题请帮忙.
我正在尝试为具有自定义键的C++映射编写自定义比较器.
struct key { int year; int no; };
map<key, detail, compare> details_map;
Run Code Online (Sandbox Code Playgroud)
如果year值相等,则必须比较no值.
我试图想出一种方法来编写一个可以比较两个值的比较器.到目前为止,我只能写一个比较一个值的比较器.
struct Compare{bool operator()(const key &lhs,const key &rhs)const{return lhs.year<rhs.year;}}
Run Code Online (Sandbox Code Playgroud)
有人可以解释比较器如何工作map?
此外,是否可以将比较器写为函数?
我是一个verilog的新手.
我做了很多研究,最后编写了这段代码,但似乎无法正常工作.
任何人都可以帮我解决吗?
module comparator();
reg[3:0] a, b;
wire[1:0] equal, lower, greater;
if (a<b) begin
equal = 0;
lower = 1;
greater = 0;
end
else if (a==b) begin
equal = 1;
lower = 0;
greater = 0;
end
else begin
equal = 0;
lower = 0;
greater = 1;
end;
initial begin
$monitor($time,
"a=%b, b=%b, greater=%b, equals=%b, lower=%b",
a, b, greater, equal, lower);
a=9; b=10;
#100 $display ("\n", $time, "\n");
end
endmodule
Run Code Online (Sandbox Code Playgroud) 在可比性中,只能创建一个排序序列,而在比较器中,可以创建许多排序序列。排序顺序在这里到底是什么意思。
我正在实现一个基于绝对值进行排序的比较器.所有我认为我需要的是这一行代码:
public int compare(Integer int1, Integer int2) {
return Math.abs(int1).compareTo(Math.abs(int2));
}
Run Code Online (Sandbox Code Playgroud)
错误:'no suitable method found for abs(Integer)'
我以为Java将Integer对象解包为int?
我尝试使用.intValue()从两个Integer对象中提取int值,但这也不起作用.我究竟做错了什么?
虽然我使用下面的比较器来对我正在获得的对象进行排序比较方法违反了比较器中的一般合同问题.
final Set<Span> set = new TreeSet<Span>(new Comparator<Span>() {
public int compare(final Span firstSpan, final Span secSpan) {
BigInteger s1X0 = firstSpan.getCoordinates().getX0();
BigInteger s1X1 = firstSpan.getCoordinates().getX1();
BigInteger s2X0 = secSpan.getCoordinates().getX0();
BigInteger s2X1 = secSpan.getCoordinates().getX1();
BigInteger s1Y0 = firstSpan.getCoordinates().getY0();
final BigInteger s2Y0 = secSpan.getCoordinates().getY0();
if(s1X0.intValue() == s2X0.intValue() && s1X1.intValue() == s2X1.intValue() && s1Y0.intValue() == s2Y0.intValue()){
return 0;
}
if ((s1Y0.intValue() - s2Y0.intValue() <= 5) && (s1Y0.intValue() - s2Y0.intValue() >= -5)) {
return (s1X0.intValue()>s2X0.intValue()) ? 1 : -1;
} else {
if …Run Code Online (Sandbox Code Playgroud) List<Animal> animals = this.service.findAll();
animals = animals.stream().sorted(Comparator.comparing(Animal::getName)).collect(Collectors.toList());
//working
Run Code Online (Sandbox Code Playgroud)
而
List<Animal> animals = this.service.findAll();
animals = animals.stream().sorted(Comparator.comparing(Animal.getName()).collect(Collectors.toList());
//Not working..
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么我不能使用比较器比较没有方法参考?
任何人都可以请你解释一下java"compare"方法如何适用于输入 "XXXXS, XXXS, XXS, XS,S,M, L,XL,XXL,3XL"
如果输出是"3XL,XS,S,M,L,XL,XXL"输出"3XL,XS,S,M,L,XL,XXL"但我想输出为"XS,S,M,L,XL,XXL,3XL"
根据java文档("https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html"),它说"比较它的两个参数的顺序.返回一个负整数,零,或第一个参数的正整数小于,等于或大于第二个参数."
当输入是两个字符串时它如何比较小于或大于?我认为输出不是基于字母顺序,因为"3XL,XS,S,M,L,XL,XXL"是我得到的输出.
comparator ×9
java ×6
c++ ×2
java-8 ×2
sorting ×2
collections ×1
comparable ×1
compare ×1
set ×1
std-pair ×1
stl ×1
stream ×1
vector ×1
verilog ×1