2

嗨,我在重载结构的运算符以用作键时遇到问题。这是我打算用作映射键的结构,基本上它有2个字符数组:

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,那么密钥就被认为是唯一的。我使用它,在运行时我得到“无效的运算符 <”。我在创建密钥方面完全是新手,所以在覆盖 < 运算符时我仍然无法理解逻辑。感谢任何帮助,谢谢!

4

1 回答 1

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是您的主键,因此您唯一考虑辅助键的时间是主键值是否相等。

于 2013-04-09T04:18:45.987 回答