gpt4 book ai didi

c++ - 是否可以在不复制的情况下从 std::vector 中提取数据? (并让 vector 忘记它)

转载 作者:行者123 更新时间:2023-12-05 02:40:57 25 4
gpt4 key购买 nike

我有一个 std::vector<byte>对象,我想从中提取数据而不复制。它可能包含数兆字节的数据。所以,如果我复制数据,我会失去性能。是否可以从 vector 中提取数据并使其忘记数据,也就是说,它不会在销毁后为数据释放内存?希望得到您的帮助!提前致谢!

附言:extract在这种情况下意味着只获取一个指向数据的原始指针并让 vector 忘记它(即在销毁后不要释放内存)

最佳答案

不,据我所知,不可能从 vector 中提取部分数据。

它与在内存的连续部分提供数据的 vector 结构不兼容。 std::vector 内存是连续的,所以如果有可能将其内存的一部分移动到另一个地方,则需要转移内存提醒以保持它的连续性。这本身就是一个巨大的负担。

我个人建议通过指针/引用传递main vector,根据需要直接使用需要的部分。

如果您需要将std::vector全部 数据移动到另一个地方,您可以只使用std::move()这样做。您甚至可以使用 std::swap() 将 2 个 vector 的内容交换在一起。

关于c++ - 是否可以在不复制的情况下从 std::vector 中提取数据? (并让 vector 忘记它),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68349027/

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