首页 > 后端开发 > C++ > 正文

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

Barbara Streisand
发布: 2024-11-12 08:39:02
原创
671 人浏览过

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

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

在编程中,通常需要将数据传递给需要原始指针的函数数据本身。当使用像 std::vector 这样的动态容器时,此任务可能具有挑战性。

考虑一个场景,其中您有一个函数 process_data() ,它接受 const void 指针作为输入。以前,您可以简单地通过引用传递 char 数组:

char something[] = "my data here";
process_data(something);
登录后复制

但是,当将此逻辑转换为使用 std::vector 时,会尝试直接传递向量:

vector<char> something;
process_data(something);
登录后复制

或获取其开始迭代器的地址:

process_data(&something.begin());
登录后复制

导致无意义的数据或编译器警告。

挑战在于获取指向 std 中实际数据的指针::向量。为此,有多种选项可供选择:

1。访问第一个元素:

您可以检索向量中第一个元素的地址:

process_data(&something[0]); // or &something.front()
登录后复制

2。使用 data() 成员函数(C 11 及更高版本):

在 C 11 中,std::vector 引入了 data() 成员函数:

process_data(something.data());
登录后复制

此函数是首选,因为即使向量为空,调用也是安全的。

注意: &something 提供向量对象本身的地址,而不是其数据。因此,它不应该用于此目的。

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

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