我编写了一个模板函数,用于测试给定容器中是否有键或值。
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::mapand std::vector。但是当容器是 时std::set,会发现一个模棱两可的错误。因为std::set定义了key_type和value_type,并且它们是相同的类型。所以我的问题是如何解决这个问题?谢谢!