這與previous question I asked類似,但它涉及模板矢量分量相加功能。表示嵌套的C++模板
我有一個叫做add
的函數,它需要兩個向量並將它們的相加存儲在輸出向量中。我正在學習C++,所以我不知道如何使類型參數爲thrust::plus
通用?問題是T
是device_vector
和host_vector
的類型參數;這應該是Vector
的類型參數。
template<typename Vector, typename T>
void add(const Vector& in1, const Vector& in2, Vector& out) {
transform(in1.begin(), in1.end(), in2.begin(), out.begin(), thrust::plus<T>(c));
}
的載體可以是兩個類型:
device_vector<T>
host_vector<T>
我的代碼不能編譯,因爲它是在抱怨:
error: no instance of function template "add" matches the argument list
我怎麼能起到加功能通用的,所以它很容易與T
的device_vector<T>
或host_vector<T>
一起使用?
完美。它現在可以工作,所以謝謝你。我來自Java,所以泛型系統與我習慣的有所不同。 – jimjampez
@jimjampez C++模板與Java泛型完全不同,所以你可能會「忘掉你學到的東西」,至少暫時:) – juanchopanza
大聲笑:)你有書推薦爲Java開發人員學習C++嗎? – jimjampez