代码之家  ›  专栏  ›  技术社区  ›  clstaudt

Cython是否支持C++11容器?

  •  9
  • clstaudt  · 技术社区  · 11 年前

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

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

    但是C++11引入的新容器呢 std::unordered_map , std::unordered_set 等等。他们是否以同样的方式得到支持?我找不到合适的导入语句。

    2 回复  |  直到 9 年前
        1
  •  22
  •   Ami Tavory    9 年前

    目前的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类一样。

        2
  •  1
  •   kennytm    8 年前

    Cython默认情况下不支持它们,但您可能会创建自己的接口,遵循 https://github.com/cython/cython/blob/master/Cython/Includes/libcpp/map.pxd .

    Cython现在支持unordered_map和unordered_set,因为 0.20.2 .

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