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

如何从`std::vector`获取原始数据指针?

Susan Sarandon
Susan Sarandon原创
2024-11-21 22:57:11283浏览

How to Obtain a Raw Data Pointer from a `std::vector`?

为 std::vector 提供原始数据指针

当使用 std::vector 作为 char 数组时,可能会出现需要将原始数据指针传递给需要 void 指针的函数。最初,字符数组用于此目的,如代码所示:

char something[] = "my data here";
process_data(something);

但是,std::vector 的动态性是可取的,导致以下尝试:

vector<char> something;
*cut*
process_data(something);

挑战在于将 char 向量传递给函数,以便它可以访问向量的原始数据data.

传递原始数据指针

使用 &something 传递向量对象的地址是不正确的,因为它不提供数据的地址。同样,使用 &something.begin() 也是不标准的,会产生警告。

正确的做法是获取容器初始元素的地址,可以通过以下方式实现:

&something[0] // or &something.front()
&*something.begin()

在 C 11 中,std::vector 类引入了一个新的成员函数 data(),其作用与上述方法相同。它返回容器的初始元素的地址,即使容器为空也可以安全使用。

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

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