0

C/C++ は python API を使用して py をロードできます。

ただし、単純なタイプのみがサポートされています。

APIを使用してマップをpyに渡すにはどうすればよいですか?

または、どの方法が優れていますか?

4

2 に答える 2

1

さまざまな STL タイプ用の既製のテンプレートがいくつかあるSWIGを使用します。たとえば、これを参照してください。

于 2010-07-10T15:20:09.513 に答える
0

extern CPython C API は C レベルの機能 (C++ レベル 1 ではない) をサポートします -- 基本的に、ブロック (&c は含まれません)に入れることができるものを Python に簡単に公開できますstd::map-- 他のものについては、少し必要ですより多くの仕事。その作業の性質は、Python で使用するために C++ コードをラップするために何を使用しているかによって異なります。ベア C API、SWIG、SIP、Boost Python、Cython など、多くのオプションがあります。

裸のC API(あなたの質問とタグから判断して、あなたが使用しているものだと思います)では、カスタムオブジェクトタイプを作成することをお勧めします-おそらく、最近では、collections.Mappingをサブクラス化する1つ(MutableMappingもちろん、変更可能な場合) )、Python でマッピングを実装する場合と同様に、マッピング オブジェクト構造に加えて、スロットなどの一般的な型構造の必要なビットを実装します。tp_itertp_iternext

もちろん、重要なアイデアは、選択したものに委譲しstd::map、必要な型変換と低レベルの操作 (オブジェクトの割り当て、参照カウント) を実行するだけで、アイテムの設定と取得、および反復を実装することです。は、Python を拡張するための高レベルのフレームワークによって、本質的にその必要がなくなる部分ですが、「ラップ アンド デリゲート」の基礎となるアーキテクチャはあまり変わりません。

于 2010-07-10T15:29:38.590 に答える