![]() |
1
9
你为什么不使用
当然,你真的应该使用C++
|
![]() |
2
5
首先,比较姓氏。如果它们相等,则比较第一个名称:
|
![]() |
3
4
首先,使用
然后,比较应该是微不足道的:
NB:一个真正的C++实现可能使用比较器函数的模板。 |
![]() |
4
3
你必须改变你的比较。基本算法是,如果朋友[i]>朋友[j],则交换它们。因此,请更改您对“>”的定义以包括名字比较。 应该这样做:
不过,您可能只想进行一次姓氏比较(将其存储在一个临时变量中,而不是进行两次比较),但想法是相同的。
注意,最好的方法可能是在friend类中提供比较函数。然后你可以使用
|
![]() |
5
2
除了选择使用两个名称的比较函数之外,还可以对第一个名称进行排序。 然后 按姓氏排序,但必须注意使用 stable sort 第二次传球。也不妨先用一下。
好消息:
这比单排序与自定义比较函数的选择效率低,但它使您可以轻松地在运行时选择多个排序(因为您不必定义每个可能的比较函数或迷你语言)。 |
![]() |
6
1
请不要自己实现排序——STD::排序(in)
无论如何,你必须指定一个比较函数或更好的函子。
你可以这样调用它:
|
![]() |
7
1
如果你不介意用 boost.tuple (以及替换或至少修改friend的现有实现),其中包含一个比较函数。
以上这些都应该有效。 |
![]() |
8
0
添加以下内容:
|
![]() |
9
0
定义一个比较函数(或类为JALF建议),并使用STL的STD::SoTo():
|
![]() |
10
0
可以使用左对齐的姓氏和名字作为排序关键字的连接。 这是你在寻找的另一个观点,我想:)
|
|
11
0
你可以用姓氏排序,如果姓氏是相同的,用名字来排序。 类似这样(使用气泡排序):
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |