containers - FreePascal 中 C++ std::vector、std::deque 和 std::map 的等效项

标签 containers freepascal delphi

ObjectPascal(FreePascal 编译器)中的 std::vectorstd::dequestd::map 等价于什么?

简而言之:

  • (向量)是一个自动调整大小的连续数组

  • (deque) 是一个自动调整大小的数组混合数组,提供接近 O(1) 的随机数 访问,同时允许 O(1) 从任一端推送/弹出

  • (map, unordered_map) 是一个关联数组

最佳答案

一般来说,假设某些不同语言有直接替代品是不合逻辑的。

目前,FPC 泛型是旧式 C++ 之类的泛型(基于 token 重放)和 Delphi 更 .NET 风格的泛型(完全声明性,但对于没有自动装箱的语言的值类型的限制更多)的混合。

无论如何,我都会尝试一下:

  1. TList 或其通用变体。 (Delphi 中的 TList<> 或 fgl.Tf*fgl 单元中的 List)
  2. 没有标准类型,我有一个数组泛型类的数组,但它经过优化以避免有序列表的一些问题(插入性能),同时仍然是有序类型。我已经把它放在 http://www.stack.nl/~marcov/genlight.pas ,也许它会给您一些如何解决问题的想法。
  3. 还没有。 T字典一次http://bugs.freepascal.org/view.php?id=27206 promise 。目前通常使用TAVLTree。

packages/fcl-STL 中还有一些泛型,包括简单的双端队列,我建议您查看一下。

关于containers - FreePascal 中 C++ std::vector、std::deque 和 std::map 的等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29114762/

相关文章:

c++ - std::map 是否自动平衡自身

使用 Delphi 使用 C dll

delphi - SOAP 与sugarcrm和delphi 7的连接

delphi - 数据库和谷歌日历之间的数据同步

delphi - 如何在动画圆的宽度时获得平滑的子像素动画?

amazon-web-services - 亚马逊 aws sagemaker 中的 Randomforest?

height - 改变容器高度

freepascal - Free Pascal 有实现 SHA256 或 SHA512 的方法吗?

c++ - 带私有(private)构造函数的 vector <class>

Free Pascal Lazarus 1.0.2 (FPC 2.6.0) 中的 WinAPI 函数