c++ - 将 std::list 转换为 C 友好类型

标签 c++ c stl

从共享库函数(由 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/

相关文章:

c# - Visual Studio 中多个启动调试进程之间的更多视觉差异?

C++ vector 在递归函数中丢失数据

c++ - 循环帮助 : string vector to 3D char vector

c++ - 如何将 std::hash 专门化为来自其他库的类型

c - 在 C 程序中调用 gnuplot 绘制文件

c - 结构数组中的动态分配内存(C 语言)

c - 多个生产者/消费者和临界区代码问题

c++ - 如何使用自定义的重复判断函数做一个集合?

algorithm - 矢量删除给出意想不到的结果

c++ - 为什么 cout 和 cin 使用按位移位(<< 和 >>)?