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

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

Susan Sarandon
发布: 2024-11-21 22:57:11
原创
279 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板