C++ 更改基于参数设置的默认顺序

C++ Changing a set default order based of a parameter

本文关键字:设置 默认 顺序 参数 于参数 C++      更新时间:2023-10-16

我正在尝试修改函子以接受参数,以便我可以根据该参数对集合进行排序。我只是想不通

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};
  // ...
}

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

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

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