2017-01-08 3 views
2

Pythonのリスト構造をob_itemを使用して、Pythonのリスト構造店PyObjectは、以下のようなものです:なぜ** ob_itemの代わりに、*

typedef struct { 
    PyObject_VAR_HEAD 
    PyObject **ob_item; 
    Py_ssize_t allocated; 
} PyListObject; 

** ob_itemを使用して、なぜ?私は* ob_itemで十分だと思います。あなたが追加要素を削除すると、ポインタを使って作成した任意のリストと同じように、あなたはノードのポインタがを指しているものをを変更する必要があります、ので

+1

リストのストレージにC++ベクタなどの要素が物理的に含まれているという印象を受けていますか?リストはその要素へのポインタを保持します。 – user2357112

答えて

2

は、オブジェクトのだけではなく、値がある(指されていますちょうど*ob_itemで得られるもの; **ob_itemあなたはポインタを「再突き」ましょう。

リストには実際のオブジェクトが含まれないことに注意してください。リストにはポインタが含まれています。ポインタを指すポインタを使用できるようにするには、前述したようにノードのポインタを再指示できるようにするには、**が必要です。

関連する問題