gpt4 book ai didi

c++ - 如何访问 std::vector 的内部连续缓冲区,我可以将它与 memcpy 等一起使用吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:59 24 4
gpt4 key购买 nike

如何访问 std::vector 中使用的连续内存缓冲区,以便我可以对其执行直接内存操作(例如 memcpy)?此外,在该缓冲区上执行诸如 memcpy 之类的操作是安全的吗?

我读过标准保证 vector 在内部使用连续的内存缓冲区,但它不一定作为动态数组实现。我认为鉴于它绝对是连续的,我应该能够这样使用它 - 但我不确定 vector 实现是否将簿记数据存储为该缓冲区的一部分。如果是这样,那么诸如 memcpy vector 缓冲区之类的操作将破坏其内部状态。

最佳答案

实际上,几乎所有编译器都将 vector 实现为引擎盖下的数组。您可以通过执行 &somevector[0] 获取指向此数组的指针。如果 vector 的内容是 POD('plain-old-data')类型,那么执行 memcpy 应该是安全的 - 但是如果它们是具有复杂初始化逻辑的 C++ 类,您会更安全地使用std::copy .

关于c++ - 如何访问 std::vector 的内部连续缓冲区,我可以将它与 memcpy 等一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7249671/

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