gpt4 book ai didi

C++根据参数更改设置的默认顺序

转载 作者:行者123 更新时间:2023-11-28 04:46:13 25 4
gpt4 key购买 nike

我正在尝试修改一个仿函数以接受一个参数,这样我就可以根据该参数对集合进行排序。我就是想不通

struct sortset {
bool operator() (const string& s1, const string& s2) const {
//Sorting algorithm depending on "sortingVar"
}
};

main() {
string sortingVar; cin >> sortingVar;
set<string, sortset> mySet;
...
}

最佳答案

给比较器一个构造函数,它接受参数来确定比较器的行为:

struct sortset
{
sortset(const string& sortingVar) : sortingVar(sortingVar) {}

bool operator() (const string& s1, const string& s2) const {
//Sorting algorithm based on "sortingVar"
}
private:
const string sortingVar;
};

int main() {
string sortingVar; cin >> sortingVar;

// Either:
set<string, sortset> mySet{sortset{sortingVar}};

// Or:
sortset comp{sortingVar};
set<string, sortset> mySet{comp};

// ...
}

注意 the set constructor允许您提供比较器的实际实例,因此您可以使用它来传递一个非默认构造的实例(这也是一件好事,因为现在不存在这样的东西)。

如果您愿意,可以添加一些 std::move

不要忘记给 main 一个返回类型。

关于C++根据参数更改设置的默认顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49214069/

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