gpt4 book ai didi

c++ - C++中自定义对象和运算符重载的比较

转载 作者:搜寻专家 更新时间:2023-10-31 00:46:33 24 4
gpt4 key购买 nike

阅读this关于如何在 C++ 中比较自定义对象的问题。我不明白这里使用的运算符重载。什么运算符在这里重载了?是吗 ()?重载它有什么用?

struct MyStruct
{
int key;
std::string stringValue;

MyStruct(int k, const std::string& s) : key(k), stringValue(s) {}
};

struct less_than_key
{
inline bool operator() (const MyStruct& struct1, const MyStruct& struct2)
{
return (struct1.key < struct2.key);
}
};

最佳答案

重点是使用less_than_key对象作为函数:

less_than_key f;
bool result = f(key1, key2);

可以像函数一样调用的对象(包括各种函数)有时被称为仿函数(警告:这不是数学中仿函数的意思),或者函数对象,或者有时是 functoids

许多标准库算法和容器都期望这样的函数对象作为参数。例如,std::map 可以使用二进制函数对象(与您向我们展示的完全一样)进行自定义,以了解它应该如何对键进行排序。

请引用this beginners' book list并阅读有关标准算法和容器的信息,以了解您可以在哪里使用这些野兽。

函数对象和迭代器是 C++ 标准库的核心,您应该真正了解它们以充分利用 C++。

关于c++ - C++中自定义对象和运算符重载的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5002436/

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