从共享库函数(由 C++ 代码实现)返回一个 std::list
对象给 C 消费者的最优雅的方法是什么?我知道对于 std::vector
,我们可以返回 vector 的第一个元素的地址,并让消费者将其视为数组,但 std::list 是作为链接列表实现的。
最佳答案
将 std::list
复制到 std::vector
并返回第一个元素的地址,正如您已经提到的那样。
(当然,这可能意味着您一开始就不想使用 std::list
。)
(此解决方案假定被访问的对象由 C++ 库拥有——如果不是这种情况,您可能需要考虑从 C 代码分配内存并传递一个指向 C++ 库的指针以复制数据。)
关于c++ - 将 std::list 转换为 C 友好类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2087582/