将std::list对象从共享库函数(由C++代码实现)返回给C使用者的最优雅方法是什么?我知道std::vector,我们可以返回向量的第一个元素的地址,并让消费者将其视为一个数组,但std :: list实现为链接的lis.
小智 9
如前所述,std::list将a 复制到a std::vector并返回第一个元素的地址.
(当然,这可能意味着您不想首先使用a std::list.)
(此解决方案假定所访问的对象归 C++库所有 - 如果不是这种情况,则可能需要考虑从C代码中分配内存并将指针传递到C++库以复制数据. )
你总能复制一份:
list<int> lst;
int *arr = new int[lst.size()];
copy(lst.begin(),lst.end(),arr);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11270 次 |
| 最近记录: |