Cython支持C ++ 11容器吗?

时间:2013-10-08 11:40:36

标签: python c++ c++11 cython c++-standard-library

Cython为我们提供了一种简单的方法来导入C ++标准库数据结构,例如:

  from libcpp.vector cimport vector
    from libcpp.utility cimport pair

但是使用C ++ 11引入的新容器怎么样:std::unordered_mapstd::unordered_set等。它们是否以相同的方式支持?我找不到合适的导入声明。

2 个答案:

答案 0 :(得分:19)

目前的cython版本允许它们。

确保您的setup.py包含以下内容:

ext_module = Extension(
    "foo",
    ["foo.pyx"],
    language="c++",
    extra_compile_args=["-std=c++11"],
    extra_link_args=["-std=c++11"]
)

然后您可以使用

from libcpp.unordered_map cimport unordered_map

与任何其他STL类一样。

答案 1 :(得分:0)

Cython默认不支持它们,但您可以按照https://github.com/cython/cython/blob/master/Cython/Includes/libcpp/map.pxd的结构创建自己的界面。

Cython现在支持自0.20.2以来的unordered_map和unordered_set。

from libcpp.unordered_map cimport unordered_map
from libcpp.unordered_set cimport unordered_set