我正在考虑使用一些 boost range algorithms在我的项目中。主要是为了让我的代码不那么冗长,例如替换
std::sort(std::begin(vec), std::end(vec));
std::unique(std::begin(vec), std::end(vec));
与
boost:unique(boost::sort(vec));
我的主要保留意见是,我不确定 boost 算法是否使用与标准库等价物相同的实现,或者是否具有相同的复杂性保证。我检查了一些 boost 算法的源代码,它们确实只是调用了标准库的等价物,但这是保证吗?
最佳答案
Boost.Range 文档指定了每个函数的复杂性保证。但是没有什么要求必须通过使用标准库等效的基于迭代器的算法来提供这些保证。
例如,根据文档,boost::sort
需要提供 O(N log(N))
排序操作。它对等量元素没有稳定性要求。由于这些要求与 std::sort
相同,因此可以通过调用该函数来实现。但是 Boost 中没有任何东西需要这个。
关于c++ - boost 范围算法实现和复杂性保证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34465861/