将结构体的操作符重载为映射键
overloading operators for struct as map key
嗨,我有问题重载我的结构的操作符作为一个关键。这是我的结构,我打算用它作为映射键,基本上它有两个字符数组:
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的,那么这个键就被认为是唯一的。我使用这个,在运行时得到"无效操作符<"。我是一个全新的创建键,所以我仍然有一些问题理解逻辑时,覆盖<操作符。感谢任何帮助,谢谢!>
你对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
是主键,所以只有在主键值相等的情况下才会考虑使用辅助键。
相关文章:
- 为C++重载函数创建SWIG类型映射
- 重载std::映射不同的密钥类型
- 重载调用是不明确的:一对内联映射作为构造函数参数
- 哈希映射没有可行的重载 '='
- 重载 [ ] 运算符用于 C++ 中的 stl 映射
- 没有用于引用映射的可行重载运算符
- 在映射中插入地址时,新运算符重载会导致无限递归
- VC++11映射和多映射迭代器(重载)C2535
- 重载内存映射文件加载程序(C++)
- C++映射不同类型的分配重载
- 在映射容器中使用映射值重载<<运算符
- 如何映射到重载Qt插槽
- 函数映射容器中C++函数返回类型重载:自动推导失败,并出现编译器错误
- 如何使用输入流重载将项插入类中的映射成员
- 将结构体的操作符重载为映射键
- 将C++重载函数映射到异构元组上
- 映射中带有重载()运算符的函子-仅按需求值
- C++ 映射数组运算符重载启用设置值
- 映射比较操作符重载
- 带有c++重载函数的SWIG类型映射