5

我在 cython 中编写了一个函数,它将在字符串的 STL 向量中搜索给定的字符串,如果找到则返回 true,否则返回 false。性能在这里非常重要!理想情况下,我希望有一个模板函数来做同样的事情,这样我就不必为每种数据类型编写一个函数。我确信这是可能的,但我不知道模板化函数的 cython 语法。(我知道如何在 C++ 中做到这一点)

from libcpp cimport bool
from libcpp.string cimport string
from libcpp.vector cimport vector
from cython.operator cimport dereference as deref, preincrement as inc

cpdef bool is_in_vector(string a, vector[string] v):
    cdef vector[string].iterator it = v.begin()
    while it != v.end():
        if deref(it) == a:
            return True
        #Increment iterator
        inc(it)
    return False

谁能帮我一把?

4

1 回答 1

2

使用融合类型

例子:

cimport cython

ctypedef fused any:
    string
    cython.int

cpdef bool is_in_vector(string a, vector[any] v)

或者这样:

ctypedef fused vector_t:
    vector[string]
    vector[cython.int]

cpdef bool is_in_vector(string a, vector_t v)
于 2012-11-09T15:55:41.427 回答