首页 >后端开发 >C++ >如何从 std::vector 检索原始数据指针?

如何从 std::vector 检索原始数据指针?

Barbara Streisand
Barbara Streisand原创
2024-11-11 17:34:02269浏览

How to Retrieve a Raw Data Pointer from a std::vector?

从 std::vector 检索原始数据指针

问题:

您寻求在接受 void 指针的函数中使用 std::vector 作为 char 数组。尝试直接传递向量或通过其 begin() 迭代器传递向量会导致不正确的数据或编译器警告。

解决方案:

访问 std 的原始数据::向量,使用以下方法之一获取其初始元素的地址:

  • &something[0] 或&something.front() - 返回索引 0 处元素的地址。
  • &*something.begin() - 返回 begin() 迭代器指向的元素的地址。

从 C 11 开始,提供了一个附加选项:

  • &something.data() - 返回初始元素的地址,即使是空容器也能确保安全。

示例:

void process_data(const void *data);

std::vector<char> something;

// Cast the raw data pointer to char* for compatibility.
char *data_ptr = reinterpret_cast<char*>(something.data());
process_data(data_ptr);

以上是如何从 std::vector 检索原始数据指针?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn