有没有什么方法/技巧可以将 std::set 传递给需要 C 数组的 C API?
有没有办法/技巧将 std::set 传递给需要 C 数组的 C API?
Is there is a way/trick to pass std::set to a C API which expects C Array?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不直接,但您可以首先 将集合转换为向量(例如,
vec
),然后传递&vec[0]
,它是一个指向内部向量数组第一个元素的指针。使用 C++11,您可以传递
vec.data()
而不是&vec[0]
。Not directly, but you can first convert the set to a vector (called, say,
vec
), and then pass&vec[0]
, which is a pointer to the first element of the internal vector array.With C++11, you can pass
vec.data()
instead of&vec[0]
.不,但是您可以很快用您设置的内容填充数组。例如,假设 mySet 是与 YOUR_TYPENAME 类型相同的集合:
那么只需将 arr 传递到 C API 中即可。
No, but you could fill an array with your set contents pretty quickly. For example, assuming mySet is a set of the same type as YOUR_TYPENAME:
Then just pass arr into the C API.
为了完整起见,当前接受的答案的向量替代方案如下所示:
我更喜欢这种风格,因为:
delete< /代码>)。
For completeness, the vector alternative to the currently accepted answer would look like this:
I prefer this style because:
delete
).