在C ++中运行swig的结果与在python中运行的结果不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C ++中运行swig的结果与在python中运行的结果不同相关的知识,希望对你有一定的参考价值。

void BK::BKTree::recursiveSearchNew(BK::Node *node, std::vector<std::pair<std::string, int> > *r, string w,
                                size_t t) 
size_t curDist = levenshteinDistance(node->word, w);
size_t minDist = curDist - t;
size_t maxDist = curDist + t;

if (curDist <= t) 
    std::pair<string, int> p;
    p = std::make_pair(node->word, curDist);
    r->push_back(p);

Node* child = node->leftChild;
if (!child) return;

while (child)

    if (inRange(child->distance, minDist, maxDist))
        recursiveSearchNew(child, r, w, t);

    child = child->rightSibling;

此递归函数由swig编译,结果向量仅返回最后一个元素,但是c ++返回正常结果。这是文件.i:

%module bk
%include <std_pair.i> 
%include <std_vector.i> 
%include <std_string.i> 
%template() std::pair<std::string,int>; 
%template(PairVector) std::vector<std::pair<std::string,int> >; 
%template(StringVector) std::vector<std::string>;

% 
 #include "BKTree.h" 
% 
 %include "BKTree.h" 
答案
您的代码对我来说看起来不错。创建您的问题的可复制示例。这是演示模板正常工作的示例(SWIG 3.0.12,VS2015,Python 3.8):

以上是关于在C ++中运行swig的结果与在python中运行的结果不同的主要内容,如果未能解决你的问题,请参考以下文章

关于Python的py文件在Python自带的shell编辑器中运行成功,用cmd打开运行却出错 在cmd下运行结果

Python篇(一) 引号的作用及其区别

Python3.6在win7中无法正常运行的问题

顺序并在一个线程中运行时差c ++ [关闭]

2-3

C#代码不能在visual studio中运行完整的python脚本