gpt4 book ai didi

memory-management - 在不调整数组大小的情况下填充任意大小的向量的惯用方法?

转载 作者:行者123 更新时间:2023-11-29 08:14:27 25 4
gpt4 key购买 nike

有时您想要分配数据,但事先并不知道您需要多少数据。

大多数情况下向量都很好,但有时分配内存块链并根据需要创建新 block 会更有效。

如果您不需要通过索引直接访问它们(例如只弹出最后一项),它们可以保留为内存块。否则,一旦完成,就可以分配固定大小的向量并将数据复制到其中。

虽然这可以在 Rust 中使用 VecLinkedList 来完成,但是否有更惯用的方法来执行此任务?

最佳答案

实际上,我更喜欢 Vec<Vec<T>>在这种情况下,这类似于 std::deque是在 C++ 中实现的。

Vec<Vec<T>>所有内部Vec<T>具有相同的最大尺寸,除了第一个和最后一个 Vec<T>满满当当,您可以拥有 O(1) 索引内存稳定性。

当然,指向 block 的指针将随着外部 Vec 移动。重新分配和所有,但一个memcpy 24 个字节就足够了。

关于memory-management - 在不调整数组大小的情况下填充任意大小的向量的惯用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39187602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com