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