c++ python交互之boost.python 简集之 vector处理

c++源码:src.cpp

#include <vector>

typedef std::vector<double> dvec;

dvec A()
{
    dvec vec;
    vec.push_back(1.0);
    return vec;
}

 

python转换代码:src4py.cpp

 

#include <boost/python.hpp>
#include <boost/python/suite/indexing/vector_indexing_suite.hpp>
#include "src.cpp"

using namespace boost::python;
BOOST_PYTHON_MODULE(test)
{
    class_<dvec>("pyvector")
        .def( vector_indexing_suite<dvec > () )
        ;
    class_<std::vector<dvec> >("pyvector_vec")
        .def( vector_indexing_suite< std::vector<dvec> > () )
        ;

    def("a",A);
}

python调用代码 :test.py

import test
#这里调用C++中的A()函数,会返回一个vector对象
a = test.a()

b = test.pyvector()

b = a

for i in b:
    print i

b.append(2.0)

print "#----------------------------------------------"

for i in b:
    print i

print "##----------------------------------------------"

c = test.pyvector_vec()
c.append(a)
c.append(b)

for i in c:
    print i
    for j in i:
        print j
    print "----------------------------------------------"

你可能感兴趣的:(C++,c,vector,python,Module,Class)