C++ 更改基于参数设置的默认顺序
C++ Changing a set default order based of a parameter
我正在尝试修改函子以接受参数,以便我可以根据该参数对集合进行排序。我只是想不通
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
一个返回类型。
相关文章:
- 如何使用 GTK 3 正确设置默认文本
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- 为 QFileDialog 设置默认的 UNC 路径
- 在Visual Studio CMake中设置默认编译器
- 如何设置默认参数以防用户不输入另一个参数
- 为 unordered_map 中的元素设置默认构造函数(如果是 [] 运算符)
- 保证最大输出长度为双精度,并设置默认输出格式的精度
- 未设置默认值的 c++ 构造函数
- property_tree:无法设置默认属性值
- 在 Visual Studio 中的调试中断时设置默认线程,C++
- CMAKE设置默认资源/资产目录
- 如何在Qt中设置默认打印机
- Visual Studio代码设置默认配置
- 为整个Markdown文档设置默认的PER代码语言
- 如何在C Win32 GUI中为文本框设置默认背景(灰色)文本
- 在Visual Studio C 项目中设置默认的附加包含/库路径
- 在C 中的FSTREAM中设置默认目录路径
- gmock 设置默认操作 / ON_CALL vs. EXPECT_CALL
- 在C++构建器5中设置默认浏览器
- 以 C++ 为单位设置默认浮点打印精度