您好我在重载我的struct的运算符以用作键时遇到问题。这是我打算用作映射键的结构,基本上它有2个char数组:
struct FConfig
{
char product[3];
char exchange[4];
bool operator < (const FConfig &rhs) const
{
return (strcmp(product, rhs.product) < 0 ||
strcmp(exchange, rhs.exchange <0));
}
};
我的比较是只要产品或交换中的一个不等于rhs,那么该密钥被认为是唯一的。我使用这个,我得到“无效的运算符&lt;”在运行时。我是创建密钥的新手,所以在覆盖&lt;时,我仍然无法理解逻辑。运营商。感谢任何帮助,谢谢!
答案 0 :(得分:4)
您对operator <
应如何运作的困惑很常见。你希望它看起来像这样:
bool operator < (const FConfig &rhs) const
{
int product_comparision = strcmp(product,rhs.product);
if (product_comparision<0) return true;
if (product_comparision>0) return false;
return strcmp(exchange,rhs.exchange)<0;
}
由于product
是您的主键,因此您唯一考虑辅助键的时间是主键值是否相等。