【发布时间】:2016-01-08 05:06:02
【问题描述】:
我有一个复合数据类型,例如:
struct Key {
optional<int> a;
optional<int> b;
optional<int> c;
};
我还有一个多重集,multiset<Key>。例如,它包含
{1, 2, 3}
{1, NULL, 3}
{NULL, 2, 3}
{NULL, NULL, 3}
我想获取此多重集中与{1, 2, 3} 匹配的所有对象。但是有一个问题:NULL 字段应该与任何内容匹配。例如,{1, 2, 3} 与 {1, NULL, 3} 匹配。
我试图定义一个忽略 NULL 值的比较器 (<)。例如{1, NULL, NULL} == {NULL, 2, 3}。但它不遵循 weak strict order,它给了我错误的结果。
我该怎么做?
【问题讨论】:
-
你不能。在最坏的情况下,您必须获取所有元素。不妨将键存储在向量中并尝试匹配每个键。
标签: c++ c++11 dictionary multimap multiset