是否可以对std :: unordered_set,std :: unordered_map,std :: set,std :: map使用相同的函数?

时间:2018-10-28 09:12:56

标签: c++

我发现自己经常为同一个用例编写4个不同的函数。

比方说,我想编写一个“包含”函数,该函数告诉我给定的set / map是否包含一个值。这是我的实现:

template <class T, class V> bool contains(T S, V val) {
    return S.find(val) != S.end();
}

现在可以通过任何模板T调用此函数。是否可以将其限制为仅适用于上述4个stl类?还是有其他方法可以实现我想要的行为?我只是为自己的实践创建这些功能,因此非常欢迎使用hacky解决方案。

1 个答案:

答案 0 :(得分:0)

您可以编写专用的类型特征:

git branch