Cython gives us an easy way to import C++ standard library data structures, e.g.:
from libcpp.vector cimport vector
from libcpp.utility cimport pair
But what about newer containers introduced with C++11: std::unordered_map, std::unordered_set etc. Are they supported in the same way? I could not find the appropriate import statement.
Cython doesn't support them by default, but you could probably create your own interface, following the structure of https://github.com/cython/cython/blob/master/Cython/Includes/libcpp/map.pxd.
Cython now supported unordered_map and unordered_set since 0.20.2.
from libcpp.unordered_map cimport unordered_map
from libcpp.unordered_set cimport unordered_set
Current cython versions allow them.
Make sure your setup.py contains something like:
ext_module = Extension(
"foo",
["foo.pyx"],
language="c++",
extra_compile_args=["-std=c++11"],
extra_link_args=["-std=c++11"]
)
You can then use
from libcpp.unordered_map cimport unordered_map
like for any other STL class.
来源:https://stackoverflow.com/questions/19246783/are-c11-containers-supported-by-cython