c++ - c ++ set with structs, set.find() 函数产生错误'无效比较器'
问题描述
我制作了一组结构。我的结构有一个长度为 8 的数组作为指针。如果我在集合中插入一些结构,那没关系。但是当我尝试查找时,会发生错误('无效比较器')。这是我的代码。
struct Key {
int* arr;
};
bool operator<(const Key& a, const Key& b) {
for (int i = 0; i < 8; i++) {
if (a.arr[i] == b.arr[i]) {
continue;
}
else {
return a.arr[i] < b.arr[i];
}
}
return true;
}
bool operator==(const Key& a, const Key& b) {
for (int i = 0; i < 8; i++) {
if (a.arr[i] != b.arr[i]) {
return false;
}
}
return true;
}
set<Key> visit;
visit.insert(initKey);
......
Key key;
key.arr = newcandidate;
visit.find(key); -> trigger error.
我想将数组添加到某处。然后我想在那里快速找到一些数组。所以我尝试使用“设置”结构。我需要做什么来解决这个问题?非常感谢您的阅读。
解决方案
您只需要正确定义 operator<。operator== 与集合无关。您应该在最后一行返回 false。关系很严密。不可能有 a < b 和 b < a,但是您的运算符被定义为 a < a。
推荐阅读
- dataframe - 将 Spark df 行拆分为相等的长度并将它们反转以形成列
- javascript - Puppeteer HTML to PDF 未应用外部 css 文件
- reactjs - 如何在 react native 上以原生方式打开 mp4 或其他视频文件
- python - 如何正确使用 Xinclude 查看所有孩子的数据?
- azure - MS-Azure Linux VM 需要多次重启才能建立 SSH 连接
- c# - 如果我有对象 ID,如何使用 REST API 在 AzureAD 中获取对象的显示名称?
- javascript - 浏览器窗口关闭后使用 javascript 或 Vuejs 运行注销功能
- php - 在页面加载时加载 HTML 表单的提交条件
- arrays - 如何在 Mongoose 中搜索填充数组 [包含 ref 的数组]
- user-interface - 无法让 ui_guage 在指定的延迟时间后显示每条消息