Question

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.

Was it helpful?

Solution 2

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

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top