我编写了一个模板函数,用于测试给定容器中是否有键或值。
template<typename T>
bool has_key(const T &t, const typename T::key_type &key) {
return t.find(key) != t.end();
}
template<typename T>
bool has_key(const T &t, const typename T::value_type &v) {
for (auto i = t.begin(); i != t.end(); i++) {
if (*i == v) return true;
}
return false;
}
它适用于std::map
and std::vector
。但是当容器是 时std::set
,会发现一个模棱两可的错误。因为std::set
定义了key_type
和value_type
,并且它们是相同的类型。所以我的问题是如何解决这个问题?谢谢!