日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

extern 定义_Essential Cython - 2.7 - 定义并使用模板函数

發布時間:2025/3/13 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 extern 定义_Essential Cython - 2.7 - 定义并使用模板函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目地址:

https://github.com/tushushu/EssentialCython?github.com

參考書籍: 《Essential C++ 中文版》

編程環境: MacOS + Jupyter Notebook + Python 3.6

%

2.7 定義并使用模板函數

2.6的例子中,每個函數體都頗為相像。唯一的差別就是參數的類型,一個是vector<int>型,一個是vector<float>型。需要一種機制,讓我們得以將單一函數的內容與各種類型的vector綁定起來。所謂function template(函數模板)便提供了這樣的機制。 function template以關鍵字template開場,其后緊接著以成對尖括號(<>)包圍起來一個或多個標識符。這些標識符用以表示我們希望稍后決定的數據類型。用戶每次利用這一模版產生函數,都必須提供確實的類型信息。這些標識符事實上扮演著占位符的角色,用來放置函數參數列表及函數體中的某些實際數據類型。例如:

template

一般而言,如果函數具備多種實現方式,我們可將它重載,其每份實例提供的是相同的通用服務。如果我們希望讓程序代碼主體不變,僅僅改變其中用到的數據類型,可以通過function template達到目的。 Cython提供了融合類型(fused type)可以使用一個類型定義來引用多個類型。這使我們可以編寫一個可以對多種類型的值進行操作的靜態類型的cython函數。因此,融合類型允許泛型編程,并且類似于C++的template。

%%

雖然上面的例子可以運行,但是Cython還不支持vector[int_or_float] &v這種寫法(不支持&符號),所以還是需要extern C++來實現vector_sum的模板函數。

template

然后用Cython腳本導入Cpp函數。

cdef

注意template_vector_sum后面也要寫上[T],否則Cython無法識別出T(被這里坑了好久T-T)。寫測試腳本如下:

%%

總結

以上是生活随笔為你收集整理的extern 定义_Essential Cython - 2.7 - 定义并使用模板函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。