0
我知道Java泛型和C++模板是不同的,但是如何在C++中編寫以下泛型等價物?Java泛型vs C++模板
void myalgo (List<? extends T> myList)
{
//logic
}
這應該採取包含T
或亞類的T
的任何容器。我如何在C++中做類似的事情?
我知道Java泛型和C++模板是不同的,但是如何在C++中編寫以下泛型等價物?Java泛型vs C++模板
void myalgo (List<? extends T> myList)
{
//logic
}
這應該採取包含T
或亞類的T
的任何容器。我如何在C++中做類似的事情?
有沒有類似約束的一部分,但一般以下就足夠了:
#include <vector>
public:
template<typename T>
void myalgo(std::vector<T> myList)
{
//logic
}
你不會打擾普遍制約集裝箱C++。你只需要'template void myalgo(T&myList)'。如果你真的必須,你可以在函數模板體中添加一個靜態斷言。 –
如果你的算法在一系列值上工作,編寫模板的最好方法是使用迭代器,而不是特定的容器作爲模板類型。 – PaulMcKenzie
你的容器將是一個智能指針到基類的容器。你的函數也會參考容器,而不是按照價值。 C++不是Java,其工作原理是不同的。 –