我需要将一个元素插入到有序范围中,并且我还需要知道它的索引(小于该元素的范围内元素数量)。我想在 O(logN) 时间内完成此操作。我可以使用基本的 C++ 容器来做到这一点吗?
我考虑使用 std::multimap,因为这个容器能够以 O(logN) 的复杂度将元素插入到其正确的位置。但是,要获得索引,我需要调用 std::distance,这需要进行 O(N) 次操作,因为 multimap 迭代器不是随机访问的。
另一种方法是使用排序后的 std::vector 和 std::binary_search 算法。在这种情况下,搜索需要 O(logN) 的时间,但插入将需要 O(N) 次操作,因为向向量中间插入元素是线性操作。
所以,是否有 std/boost 容器可以用于实现此结果,或者我需要自己实现一个结构体?谢谢!
我考虑使用 std::multimap,因为这个容器能够以 O(logN) 的复杂度将元素插入到其正确的位置。但是,要获得索引,我需要调用 std::distance,这需要进行 O(N) 次操作,因为 multimap 迭代器不是随机访问的。
另一种方法是使用排序后的 std::vector 和 std::binary_search 算法。在这种情况下,搜索需要 O(logN) 的时间,但插入将需要 O(N) 次操作,因为向向量中间插入元素是线性操作。
所以,是否有 std/boost 容器可以用于实现此结果,或者我需要自己实现一个结构体?谢谢!