Est-il possible d'importer le std :: find, dans le libcpp.algorithm
je n'y trouve qu'une quantité très limitée de fonctions. Maintenant, je dois faire une boucle à travers le vecteur et comparer.est-il possible d'importer le fichier std :: find find_if, etc dans Cython?
-2
A
Répondre
3
Vous avez juste besoin de suivre le schéma utilisé pour envelopper les autres fonctions libcpp.algorithm
:
cdef extern from "<algorithm>" namespace "std":
Iter find_if[Iter, Func](Iter first, Iter last, Func pred)
from libcpp.vector cimport vector
from libcpp cimport bool
cdef bool findtwo(int a):
if a==2:
return True
def test():
cdef vector[int] v = [1,2,3,4,2]
cdef vector[int].iterator found = find_if(v.begin(), v.end(), findtwo)
if found != v.end():
print("Found")
Vous trouverez la grande limitation est ce que vous pouvez passer à la fonction sous-jacente: il doit être Sachez également que tout objet Python que vous renvoyez sera interprété comme true
(c'est-à-dire qu'il ne s'agit pas d'un nullptr
). Assurez-vous donc de renvoyer un booléen C++ comme je l'ai montré.
Que voulez-vous dire _import_? N'est-il pas suffisant de '#include'? –
user0042
Pouvez-vous s'il vous plaît poster votre code? –
@ user0042 Cython expose une partie de la bibliothèque standard C++ à un langage de type Python, ce qui permet d'interfacer C++ et Python. Il ne cherche pas à exposer '' particulièrement particulièrement bien, d'où la question. –
DavidW