【发布时间】:2019-11-08 08:05:14
【问题描述】:
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"
【问题讨论】:
标签: python c++ c++14 swig swig-template