2

コンテナー内のすべての要素が一意であることをテストする関数を作成しました。

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返された fromsize()difference_type返された fromdistance()は同じ符号ではありません。

 warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

std::distanceは、反復子の方向に基づいて負の数を返す場合があります。

その場合、要素の量が符号付き最大値を超えたときに、2 つのイテレータ間の要素の総数を確実に取得するにはどうすればよいでしょうか? std::sizeのようなものを探していましたが、コンテナ全体が必要です。

4

1 に答える 1