C++ std::set和boost::container::set之间的差异

C++ std::set和boost::container::set之间的差异,c++,c++11,boost,C++,C++11,Boost,std::set和boost::container::set之间的主要区别是什么?boost容器和标准容器之间的主要区别是boost容器允许不完整的类型。当实现依赖于底层容器组合的更复杂的数据结构时,这会产生巨大的差异 boost容器和标准容器的特定实现之间可能存在性能差异。但这两种情况都有可能发生 编辑:以下是集合/映射容器的一些附加说明(请参阅): [multi]集合/映射容器大小优化,将红黑树节点的颜色位嵌入父指针中。 [multi]set/map容器不使用递归函数,因此避免了堆栈问题。此

std::setboost::container::set之间的主要区别是什么?

boost容器和标准容器之间的主要区别是boost容器允许不完整的类型。当实现依赖于底层容器组合的更复杂的数据结构时,这会产生巨大的差异

boost容器和标准容器的特定实现之间可能存在性能差异。但这两种情况都有可能发生

编辑:以下是集合/映射容器的一些附加说明(请参阅):

[multi]集合/映射容器大小优化,将红黑树节点的颜色位嵌入父指针中。
[multi]set/map容器不使用递归函数,因此避免了堆栈问题。

此外,boost容器保证在默认构造时不进行分配,IIRC@sehe是的,这似乎也是真的。这对于类似向量的容器可能更有意义。您可能还有另一个不同之处:无论您使用什么编译器/平台,boost容器的实现都是全局相同的,而标准库版本通常会通过特定的优化来实现。它不好也不坏,只是取决于您实际需要什么。另一个区别是,标准库中未来包含的一些建议(如set和map中的find()函数,可以采用任何类型而不是键类型,只要它们可以用于搜索)通常在标准化之前在boost中实现,这在某些情况下可能会有所帮助。@Klaim我认为这些都是正确的观点,但大多数Boost库通常都是这样,这并不特定于Boost容器本身。