c++ - 在现代 C++ 中实现专门的数据结构

标签 c++ c++11 data-structures stl

<分区>

(好的,我之前的问题因为过于宽泛而被搁置,所以我在这里缩小范围。)

我想参加算法编程竞赛,很多问题都取决于对特定操作非常擅长的专用数据结构的使用——例如,Fenwick 树允许计算列表的前缀和对数时间的值。

现代 C++(即使用 C++11 功能)中实现此类数据结构的首选方法是什么?是否可以使用 STL 算法和容器而不是编写 struct 并手动编写每个操作的代码?

我正在寻找 Fenwick 树、线段树、treap 和其他一些在 IOI 风格的比赛中经常有用的数据结构,但一般的策略已经足够了。

最佳答案

这里有一个芬威克树的实现:http://www.algorithmist.com/index.php/Fenwick_tree

它使用 std::vector 作为底层容器。 可以说 increase 方法可以用 std::transformstd::foreach 来编写。

关于c++ - 在现代 C++ 中实现专门的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27482822/

相关文章:

c++ - 将字符串解析为 int 的 vector

c++ - 调用 RandGenerator 的隐式删除复制构造函数

c# - 比较高性能的 int 数组

c++ - 两步复制省略以在构造函数调用中捕获右值作为实例变量

c++ - 找到小于或等于当前塔的先前塔的数量

JAVA - 使用循环初始化锯齿状 3D 数组?

c++ - 重载的 const 和非 const 类方法在 C++ 中返回引用

c++ - aligned_storage 的基本用途是什么?

c++ - 将容器中的基类向下转换为派生类

c++ - 是否有一种通用的方法来转发构造函数参数?