我有一个包含结构数据元素的集合对象。但是,当对象不包含在 set 对象中时,count 似乎返回“1”。似乎它只查看结构的第一个元素。我究竟做错了什么?这是我的代码示例:
我也实现了“<”和“==”运算符:
struct drugKey_tp { std::string alert_uuid;
std::string patient_id;
std::string claim_id;
std::string ndc_code;
};
inline bool operator<(const drugKey_tp &lhs,
const drugKey_tp &rhs) {
return (lhs.alert_uuid < rhs.alert_uuid &&
lhs.ndc_code < rhs.ndc_code &&
lhs.claim_id < rhs.claim_id &&
lhs.ndc_code < rhs.ndc_code);
};
inline bool operator==(const drugKey_tp &lhs, const drugKey_tp &rhs) {
return (lhs.alert_uuid == rhs.alert_uuid &&
lhs.patient_id == rhs.patient_id &&
lhs.claim_id == rhs.claim_id &&
lhs.ndc_code == rhs.ndc_code);
};
这是我检查对象是否存在并在不存在时添加它们的地方:
drugKey_tp drugKey;
static set<drugKey_tp> savedRxDetails;
...
drugKey.alert_uuid = <some value>;
drugKey.patient_id = <some value>;
drugKey.claim_id = <some value>;
drugKey.ndc_code = <some value>;
if (savedRxDetails.count(drugKey) == 0) {
// Save the detail if this detail has not been saved
savedRxDetails.insert(drugKey);
}
else {
return;
}
我在“savedRxDetails”中添加了以下四个值:
alert id = E51ED799-10C5-475F-9474-1A403B85A83C
patient_id = 4513004328217
claim_id = 126872102351
ndc_code = 55111059430
然后下一次调用此代码,检查以下结构值以查看它们是否存在于 savedRxDetails 中。当我使用以下值调用“savedRxDetails.count(drugKey)”时,返回的值为“1”:
alert id = E51ED799-10C5-475F-9474-1A403B85A83C
patient_id = 4513004328217
claim_id = 114225128231
ndc_code = 00006027531
您可以看到结构的第一个元素 (alert_id) 和第二个元素 (patient_id) 匹配,但其余部分都不匹配。我是否需要实现“<”和“==”以外的其他运算符才能使“count”方法正常工作?