c++ - 如何复制红黑树,它的分配器应该是什么

标签 c++ copy containers assign allocator

Q #2 已更新。请回答新问题#2! --Dannyu NDos,2017 年 1 月 17 日

我一直在制作一个名为 DRV 的关联容器, 表示有限离散随机变量。它是一棵红黑树。我从标准 std::map 得到了帮助, 但我也对此感到困惑。

问题 #1. 它的复制函数如何具有 O(n) 时间复杂度?不应该是 O(n log n) 吗?我的DRV的复制构造函数具有 O(log n),使用 std::async , 不过。

旧问题 #2。 为什么它的默认分配器是 std::allocator<value_type> ?它不应该分配容器的内部节点类型吗?在这种情况下,不需要单独动态分配值。

新问题 #2。鉴于 Alloc是容器的分配器类型,容器必须持有什么分配器,Alloctypename std::allocator_traits<Alloc>::template rebind_alloc</*the type of the node*/>

最佳答案

  1. 拷贝构造函数不需要排序,只需要拷贝N即可因此节点 O(N)
  2. std::allocator<value_type>里面是“rebo​​und”(搜索“rebind” here )来分配map节点(value + tree wiring data)

关于c++ - 如何复制红黑树,它的分配器应该是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35218589/

相关文章:

html - 非全 Angular 内的全 Angular div

ubuntu - 来自守护程序 : no such container: dionaea 的错误响应

kubernetes - Openshift中的初始化容器

c++ - FormatDateTime-整数算术溢出C++

javascript - 如何在内联函数中访问该变量?

c++ - 为 std::strings 重载运算符+ - 一个坏主意?

c++ - 不可变数据结构还是 const 变量?

c++ - 使用 copy_if 复制 std::string(到另一个字符串)

c++ - 在不需要临时对象的情况下在初始化列表中查找项目

c++ - 从 Objective-C 子对象调用 C++ 对象的方法