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
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌
関連項目
参照
- P0447R28 Introduction of
std::hiveto the standard library- C++26で
hiveが追加された
- C++26で