【问题标题】:Implementing specialized data structures in modern C++ [closed]在现代 C++ 中实现专门的数据结构 [关闭]
【发布时间】:2014-12-15 11:16:00
【问题描述】:

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

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

现代 C++(即使用C++11 特性)中实现此类数据结构的首选方式是什么?是否可以使用 STL 算法和容器来代替编写structs 并手动编写每个操作?

我正在寻找 Fenwick 树、段树、treaps 和其他一些在 IOI 风格的竞赛中通常有用的数据结构,但一般的策略已经绰绰有余了。

【问题讨论】:

  • 为什么要特别强调现代 C++?您认为哪些新的语言结构或标准库增强功能会有所作为?
  • @PeterSchneider 我可能错了,但据我所知,C++11 引入了许多新的 STL 算法,使某些事情变得更容易,例如 some shown here
  • @PeterSchneider 我的观点是答案最好利用 C++11 提供的一切。

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢;这正是我一直在寻找的东西。
猜你喜欢
  • 2022-01-10
  • 2018-12-22
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 2017-09-07
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
相关资源
最近更新 更多