C++中集合和多集之间的多态性
有没有办法使用多态来为集合和多集提供一个泛型?如下。
注意:但仅适用于集合,(set, multiset)
template<typename T>
void foo(parent_set<T> &s) {
// do something
}
// main
set<int> s1 = {1, 2, 3, 4, 5};
foo(s1);
multiset<int> s2 = {1, 2, 2, 2, 2, 3};
foo(s2);
回答
那么,为什么不将整个容器作为模板参数呢?
template <class SetType>
void foo( SetType& s)
{
using T = typename SetType :: value_type;
enter code here
....
}
参数只能是一个集或多集的限制,正如通常对模板所做的那样,是通过将模板参数用作一个集来强制执行的。例如,您使用单个参数调用 insert,因此您无法传递向量。如果有第三个未知的容器具有所有必需的接口,那么允许它也有意义吗?