2017-02-16 73 views
0

我知道Java泛型和C++模板是不同的,但是如何在C++中編寫以下泛型等價物?Java泛型vs C++模板

void myalgo (List<? extends T> myList) 
{ 
    //logic 
} 

這應該採取包含T或亞類的T的任何容器。我如何在C++中做類似的事情?

+5

你不會打擾普遍制約集裝箱C++。你只需要'template void myalgo(T&myList)'。如果你真的必須,你可以在函數模板體中添加一個靜態斷言。 –

+2

如果你的算法在一系列值上工作,編寫模板的最好方法是使用迭代器,而不是特定的容器作爲模板類型。 – PaulMcKenzie

+0

你的容器將是一個智能指針到基類的容器。你的函數也會參考容器,而不是按照價值。 C++不是Java,其工作原理是不同的。 –

回答

-1

有沒有類似約束的一部分,但一般以下就足夠了:

#include <vector> 

public: 
template<typename T> 
void myalgo(std::vector<T> myList) 
{ 
    //logic 
}