我考虑在我的项目中使用一些boost range algorithms。主要是为了使我的代码更简洁,例如取代
std::sort(std::begin(vec), std::end(vec));
std::unique(std::begin(vec), std::end(vec));
与
boost:unique(boost::sort(vec));
我的主要保留意见是,我不确定升压算法是否使用与标准库等效的相同实现,或者甚至具有相同的复杂性保证。我已经检查了一些增强算法的源代码,他们确实只调用了标准库等价物,但这是保证吗?
答案 0 :(得分:4)
Boost.Range文档指定了每个函数的复杂性保证。但是没有什么要求必须通过使用基于标准库等效迭代器的算法来提供这些保证。
例如,根据文档,boost::sort
需要提供O(N log(N))
排序操作。它对同等元素没有稳定性要求。由于这些要求与std::sort
相同,因此可以通过调用该函数来实现 。但Boost 中没有任何内容需要。