我用C ++编写了一个函数并成功构建。
但是,如果我只是从C ++中的另一个函数调用它,那么构建失败。
double getlistvalue(boost::python::list l, int index)
{
if (index = -1)
return 0;
else
return boost::python::extract<double>(l[index]);
}
double xx(boost::python::list l, int index)
{
return getlistvalue(l, index);
}
上面的代码,没有第二个函数,它构建。
这是错误信息: error info
请分享如何解决它的想法。非常感谢。
答案 0 :(得分:1)
您要按值传递列表,这需要复制构造函数。错误消息告诉您没有为列表提供复制构造函数。因此,解决方案是通过引用传递列表:
%timeit df.apply(" ".join, axis=1)
10 loops, best of 3: 112 ms per loop
%timeit df[0].str.cat(df.ix[:, 1:].T.values, sep=' ')
100 loops, best of 3: 4.48 ms per loop
(和其他功能一样)。
通常,按值传递复杂对象(如列表)是一个坏主意,因为即使提供了复制构造函数,实际制作副本也会非常昂贵。