ObjectPascal(FreePascal 编译器)中的 std::vector
、std::deque
和 std::map
等价于什么?
简而言之:
(向量)是一个自动调整大小的连续数组
(deque) 是一个自动调整大小的数组混合数组,提供接近 O(1) 的随机数 访问,同时允许 O(1) 从任一端推送/弹出
(map, unordered_map) 是一个关联数组
最佳答案
一般来说,假设某些不同语言有直接替代品是不合逻辑的。
目前,FPC 泛型是旧式 C++ 之类的泛型(基于 token 重放)和 Delphi 更 .NET 风格的泛型(完全声明性,但对于没有自动装箱的语言的值类型的限制更多)的混合。
无论如何,我都会尝试一下:
- TList 或其通用变体。 (Delphi 中的 TList<> 或 fgl.Tf*fgl 单元中的 List)
- 没有标准类型,我有一个数组泛型类的数组,但它经过优化以避免有序列表的一些问题(插入性能),同时仍然是有序类型。我已经把它放在 http://www.stack.nl/~marcov/genlight.pas ,也许它会给您一些如何解决问题的想法。
- 还没有。 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/