在boost python中创建列表列表

时间:2014-11-13 14:55:37

标签: python c++ boost-python

我想使用boost::python::list创建一个列表列表。

我试过这段代码,但似乎子列表没有追加功能!

boost::python::list array;
boost::python::list temp;


for (int i = 0; i < max; i++)
        {
            array.append(temp);
            for (int j = 0; j < max; j++)
            {
                array[i].append(0); //error! array[i] does not have "append" member
            }
        }

错误讯息:

error: ‘boost::python::api::object_item’ has no member named ‘append’
       distArray[i].append(0);

1 个答案:

答案 0 :(得分:1)

您可以直接附加到temp。

boost::python::list array;
for (int i = 0; i < max; i++){
    boost::python::list temp;
    for (int j = 0; j < max; j++){
        temp.append(0);
    }
    array.append(temp);
}

由于列表可以保存任何内容,因此当您将其作为数组[i]拉回时,会返回一个通用对象。在c ++中,您需要知道类型。只需添加一个类型转换就足以满足编译器的要求,但如果还有其他任何东西可以进入,那么风险很大。如果你以后需要在列表上工作,Boost python有转换检查功能。