最終更新日時:
が更新

履歴 編集

function
<hive>

std::hive::unique(C++26)

template <class BinaryPredicate = equal_to<T>>
size_type unique(BinaryPredicate binary_pred = BinaryPredicate()); // (1) C++26

概要

連続した等価な要素群について、その先頭以外を削除する。

事前条件

binary_predが同値関係であること。

効果

連続する等価な要素群のそれぞれについて、先頭以外の全ての要素を削除する。すなわち、空でないhiveに対して、イテレータ範囲[begin() + 1, end())に含まれるイテレータiのうち、binary_pred(*i, *(i - 1))trueとなる要素を全て削除する。

戻り値

削除された要素数を返す。

例外

binary_pred例外を送出する場合を除き、例外を送出しない。

計算量

empty()falseである場合、述語をちょうどsize() - 1回適用する。そうでなければ、述語を適用しない。

備考

削除された要素を指す参照・ポインタ・イテレータを無効化する。*thisの末尾の要素が削除された場合、終端イテレータも無効化する。

#include <hive>
#include <print>

int main()
{
  std::hive<int> h = {1, 1, 2, 2, 2, 3, 1};

  // 連続する等価な要素群の先頭以外を削除する
  std::hive<int>::size_type n = h.unique();

  std::println("erased = {}", n);
  for (int x : h) {
    std::print("{} ", x);
  }
  std::println("");
}

出力

erased = 3
1 2 3 1 

バージョン

言語

  • C++26

処理系

関連項目

参照