gpt4 book ai didi

c++ - 当排序标准需要额外的变量时,如何对列表进行排序? C++

转载 作者:行者123 更新时间:2023-11-30 01:32:33 25 4
gpt4 key购买 nike

这是一项作业,所以我会故意笼统。我的问题与我已经做出的实现决定有关——也许它们不是很好。

我有一个指向结构的指针列表,例如list<MyStruct*> bob;有一次我需要根据目标的数据成员之一对这些指针进行排序,我可以使用

轻松做到这一点
bool sortbyarrival(const MyStruct* a, const MyStruct* b) {
return a->arrival < b->arrival;
}

然后调用bob.sort(sortbyarrival);效果很好。

现在在其他地方我需要根据不同的标准进行排序,这涉及程序中的计数器。我需要类似 return counter*a->arrival < counter*b->arrival; 的东西但我认为,我刚才描述的方式是我知道如何进行排序的唯一方式,而且我不知道如何将我的计数器作为附加参数传递。如何对这个指针列表进行排序?

预计到达时间:计数器只是 main 中的一个变量。所以理想情况下我可以调用类似 bob.sort(sortbyratio, counter); 的东西或 sort(bob.begin(), bob.end(), sortbyratio, counter);

最佳答案

类似于 ltcmelo 的示例,但如果对象本身不包含计数器:

struct sort_with_counter {
sort_with_counter(const double d): counter(d) {}

bool operator()(const MyStruct* a, const MyStruct* b) {
return(counter*a->arrival < counter*b->arrival);
}

const double counter;
};

mylist.sort(sort_with_counter(5.0));

如果你的计数器是一个像这样的外部变量,尽管它不会影响排序(至少如果它是正的 - 谢谢 onebyone!) - 所以这实际上可能根本没有必要(或者我误解了你的意思)之后?)。不过,在其他情况下,这是一种有用的技术。

关于c++ - 当排序标准需要额外的变量时,如何对列表进行排序? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1557570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com