c++ - boost 范围算法实现和复杂性保证

标签 c++ algorithm boost

我正在考虑使用一些 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/

相关文章:

c++ - 我可以在循环 vector<shared_ptr<BaseClass>> 时以某种方式调用派生类方法吗?

algorithm - 线段树中的元素旋转

C++ 字符串拆分错误(复杂方式)

c++ - 在 std::vector<std::pair> 中查找

c++ - boost ASIO : buffer overflow with 5 kb packet

c++ - vcpkg + cmake + Visual Studio 不工作

c++ - 错误: expression must be a pointer to a complete object type (?)

c++ - 获取地理位置源

algorithm - Batcher 的奇偶合并排序

c++ - c++标准库中有没有红黑树或者avl树的实现?