C++ 模板函数检查唯一向量

-2 c++ templates boolean vector stream

我正在尝试编写一个名为的模板化函数unique(),该函数std::vector仅使用<vector>,<set><iostream>标头来检测 a 是否只有唯一元素。

template <typename T>
bool unique(const std::vector<T>& container){}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Nat*_*ica 5

如果您可以使用std::set. 由于std::set将只存储唯一的项目,你可以创建一个std::setstd::vector并比较它们的大小。如果它们匹配,则向量具有唯一元素。那看起来像

template <typename T>
bool unique(const std::vector<T>& container)
{
    return container.size() == std::set<T>{container.begin(), container.end()}.size();
}
Run Code Online (Sandbox Code Playgroud)