我编写了一个函数来测试容器中的所有元素是否都是唯一的。
template<class InputIt>
bool all_elements_unique(InputIt first, InputIt last){
std::set<typename std::iterator_traits<InputIt>::value_type> s(first,last);
return s.size() == std::distance(first,last);
}
有用。但是,size_t
从size()
和difference_type
从 ,返回distance()
的符号不同。
warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
std::distance可能会根据迭代器的方向返回负数。
如果是这种情况,当元素的数量超过有符号的最大值时,我如何可靠地获得两个迭代器之间的元素总数?我一直在寻找类似std::size的东西,但它需要一个完整的容器。