为什么boost::fusion::as_set不能从boost::fusion::vector中删除重复项?

3

我有:

auto my_vec2 = boost::fusion::make_vector(42,false,42);
auto my_set2 = boost::fusion::as_set(my_vec2);

当我进行调试时,我原本期望my_set2只包含42和false,但实际上它包含了两个42。为什么会这样呢?如果它是一个set,那么“键”应该是唯一的,对吗?

1个回答

5

这是你的责任:

前提条件:可能不存在重复的键类型。

(来自此文档)


好的,我有一个小问题忘了问 - 一个集合存储排序后的值。如果融合集合包含不同类型,比如一个整数和一个对象的引用 - 它将如何根据内存地址对对象引用进行排序? - user997112
1
它们只是未排序的。“与STL中的联想容器不同,类似于MPL中的联想序列,Fusion联想序列没有隐含的排序关系。”(Fusion set 定义为联想序列)。因为它的工作方式与STL不同而感到困惑是可以理解的! - Nate
好的,我的困惑是什么-使用一个不保证唯一性和不排序值的集合有什么目的?(抱歉不是无知,只是真的很困惑) - user997112
1
不确定?这个集合似乎有些受限,但考虑到它必须支持异构数据类型的约束,这可能是他们能做到的最好的了。 - Nate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接