以 Char 数组形式访问原始向量数据
考虑需要在函数中使用 std::vector 作为 char 数组需要一个空指针。最初,使用常规字符数组很简单。然而,切换到 std::vector 的灵活性在访问其原始数据方面提出了挑战。
将向量指针传递给函数
立即尝试将向量 &something 或其迭代器 &something.begin() 传递给函数,因为 void 指针没有产生所需的结果。相反,&something 返回 std::vector 对象的地址,而不是数据本身,而 &something.begin() 提供迭代器的地址,不允许将其作为左值。
寻址索引 0 处的元素
解决方案在于检索向量中第一个元素的地址。这可以通过多种方法来实现。一种方法是使用 &something[0],它给出索引 0 处元素的地址。另一种选择是使用 &something.front(),它执行相同的任务。
Data() C 11 中的函数
对于 C 11 及更高版本,std::vector 中引入了一个名为 data() 的便捷成员函数。该函数直接返回容器中初始元素的地址。它的优点在于即使容器为空也可以安全使用。
结论
要将 std::vector 数据传递给接受 void 指针的函数,它需要检索向量中第一个元素的地址。这可以使用 &something[0]、&something.front() 或 data() 函数来完成,具体取决于 C 版本和容器大小。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3