`
linkyou66
  • 浏览: 228508 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

c++ python交互之boost.python 简集之Vector(map)混合使用

 
阅读更多
<p><strong>C++代码如下:src.cpp</strong>
</p>
<p>#include &lt;iostream&gt;<br>
#include &lt;string&gt;<br>
#include &lt;map&gt;<br>
#include &lt;vector&gt;<br><br>
using namespace std;<br><br>
typedef map&lt;string,int&gt; simap;<br>
typedef vector&lt;simap&gt; mvector;<br><br>
simap A()<br>
{<br>
simap m;<br>
m["aaa"] = 1;<br>
m["bbb"] = 2;<br>
m["ccc"] = 3;<br>
m["ddd"] = 4;<br>
m["eee"] = 5;<br>
m["fff"] = 6;<br><br>
return m;<br>
}<br><br>
mvector B(simap s)<br>
{<br>
mvector m;<br>
m.push_back(s); <br>
return m;<br>
}<br><br>
int C(mvector m)<br>
{<br>
int q = m[0]["aaa"];<br>
return q;<br>
}<br><strong>转换代码如下:</strong>
</p>
<p>#src4py.cpp<strong></strong>
</p>
<p><strong><br></strong>
</p>
<p>#include &lt;boost/python.hpp&gt; <br>
#include &lt;boost/python/suite/indexing/map_indexing_suite.hpp&gt;<br>
#include &lt;boost/python/suite/indexing/vector_indexing_suite.hpp&gt;<br>
#include "src.cpp"<br>
using namespace boost::python;<br>
BOOST_PYTHON_MODULE(test)<br>
{<br><br>
class_&lt;simap&gt;("pySImap")<br>
.def( map_indexing_suite&lt;simap&gt;() )<br>
;<br><br>
class_&lt;mvector&gt;("mvector")<br>
.def( vector_indexing_suite&lt; mvector &gt; () )<br>
;<br>
def("a",A);<br>
def("b",B);<br>
def("c",C);<br>
}</p>
<p></p>
<p><strong><br></strong>
</p>
<p><strong>调用代码如下:</strong>
</p>
<p><strong>#test.py<br></strong>
</p>
<p>import test<br>
mapcontainer = test.pySImap()<br>
mapcontainer = test.a()<br>
d = test.b(mapcontainer)<br>
q = test.c(d)<br>
print d[0]['aaa']<br>
print q<br><strong><br></strong>
</p>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics