首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pybind11:如何包装以std::vector<double>为参数的c++函数以避免数据复制

pybind11:如何包装以std::vector<double>为参数的c++函数以避免数据复制
EN

Stack Overflow用户
提问于 2019-09-04 17:35:53
回答 1查看 307关注 0票数 1

c++函数:

代码语言:javascript
复制
    double cpp_func(const std::vector<double>& x) {
        return ...;
    }

我想使用pybind11将这个函数封装到python中,python接受numpy数组作为参数,而x可能非常大,所以我想通过引用或指针传递numpy数组。

EN

回答 1

Stack Overflow用户

发布于 2019-09-09 09:06:12

你想要传入的数组从哪里开始它的生命?如果您可以控制它的创建,那么可以将它设置为std::vector,并对该vector的data()进行数值视图。这样,您就可以同时使用这两个函数:在C++语言中使用向量,在Python中使用numpy数组。

唯一需要注意的是,在numpy视图的生命周期内,向量不应该调整大小(或者您知道它的最大大小,并在创建后立即保留()内存)。

如果向量从不调整大小,那么您可以使向量成为视图的数据成员,以同步生命周期。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57785564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档