是否可以从 std::vector 中提取数据而不复制它? (并让向量忘记它)

2024-03-23

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

P.S: extract在这种情况下意味着只需获取指向数据的原始指针并使向量忘记它(即销毁后不释放内存)


不,无法提取part据我所知,来自向量的数据。

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

我个人建议通过指针/引用传递主向量,并根据需要直接使用所需的部分。

如果您需要搬家whole的数据std::vector到另一个地方,你可以使用std::move()这样做。你甚至可以使用std::swap()将 2 个向量的内容交换在一起。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以从 std::vector 中提取数据而不复制它? (并让向量忘记它) 的相关文章

随机推荐