我在C++中有一个从python调用的方法,需要返回一个python列表对象。

我已经创建了该方法,并将其附加到一个暴露的类上,并且现在可以从python调用...(它返回void)。

所以问题是,我如何从中创建一个python列表:
std::vector<std::string> results;
我不是很了解此文档中的构造函数如何工作:

http://www.boost.org/doc/libs/1_37_0/libs/python/doc/v2/list.html

另外...我真的不想返回一种包装好的 vector ...我只想创建一个新的python列表,其中包含 vector 中的字符串值。

我很抱歉,如果这是重复的...我发现了很多 vector 问题列表,但找不到有关创建新python列表的信息。

我可以将此问题扩展为包括其他一些问题,例如:

从以下位置创建一个新的python字典:std::map<std::string, std::string>等。

最佳答案

我使用迭代器将此功能转换为std::vectorpy::list:

namespace py = boost::python;

template<class T>
py::list std_vector_to_py_list(const std::vector<T>& v)
{
    py::object get_iter = py::iterator<std::vector<T> >();
    py::object iter = get_iter(v);
    py::list l(iter);
    return l;
}

关于c++ - std::vector提升::: python::list,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6157409/

10-12 21:43
查看更多