Pim*_*art 5 c++ python boost-python
我有一些 C++ 方法std::set<std::string>作为参数或返回值。我想将其映射到 Python frozenset(或常规set),但似乎没有一种直接的方法可以做到这一点。有谁知道如何完成这项任务。
不幸的是,Boost.Python 的标准indexing_suite不支持std::set. 有一个 indexing_suite v2,适用于所有 stl 容器。(http://mail.python.org/pipermail/cplusplus-sig/2009-July/014704.html)
它可能没有进入官方发行版,但你可以通过询问找到它。(http://mail.python.org/pipermail/cplusplus-sig/2009-July/014691.html)
我发现它比原来的更难使用indexing_suite,但它可能适合您的需求。
如果这不起作用,您可以std::set<std::string>像任何其他类一样手动换行。这将使你std::set<std::string>进入Python,在那里你可以相当容易地将其转换为Python set。
我认为这两者都需要做更多的工作。这是我要做的:
首先,用具有相同签名的函数包装 C++ 中的函数,但将返回的数据填充到 astd::vector<std::string>而不是std::set<std::string>. 暴露该函数而不是原始函数
现在你有了 python 中的数据。
其次,将 c++ 函数包装在 python 函数中,该函数获取其中的数据std::vector<std::string>并将其填充到 python 中set。
是的,从设计美学的角度来看,这相当愚蠢,而且不是世界上性能最高的代码,但它可以让你用最少的代码到达你要去的地方,而且它相当健壮。