名前空間
変種
操作

std::list::unique

提供: cppreference.com
< cpp‎ | container‎ | list
(1)
void unique();
(C++20以前)
size_type unique();
(C++20およびそれ以降)
(2)
template< class BinaryPredicate >
void unique( BinaryPredicate p );
(C++20以前)
template< class BinaryPredicate >
size_type unique( BinaryPredicate p );
(C++20およびそれ以降)

すべての連続する重複要素をコンテナから削除します。 等しい要素の各グループ内の最初の要素のみが残されます。 最初のバージョンは要素を比較するために operator== を使用し、2番目のバージョンは指定された二項述語 p を使用します。

目次

[編集] 引数

p - 要素が等しいと扱われるべき場合に ​true を返す二項述語。

述語関数のシグネチャは以下と同等なものであるべきです。

 bool pred(const Type1 &a, const Type2 &b);

シグネチャが const & を持つ必要はありませんが、関数は渡されたオブジェクトを変更してはなりません。
Type1 および Type2 は、どちらも list<T,Allocator>::const_iterator 型のオブジェクトの逆参照から暗黙に変換可能なものでなければなりません。 ​

[編集] 戻り値

(なし)

(C++20以前)

削除された要素の数。

(C++20およびそれ以降)

[編集] 計算量

コンテナのサイズに比例。

[編集]

#include <iostream>
#include <list>
 
int main()
{
  std::list<int> x = {1, 2, 2, 3, 3, 2, 1, 1, 2};
 
  std::cout << "contents before:";
  for (auto val : x)
    std::cout << ' ' << val;
  std::cout << '\n';
 
  x.unique();
  std::cout << "contents after unique():";
  for (auto val : x)
    std::cout << ' ' << val;
  std::cout << '\n';
 
  return 0;
}

出力:

contents before: 1 2 2 3 3 2 1 1 2
contents after unique(): 1 2 3 2 1 2

[編集] 関連項目

指定範囲の連続している重複要素を削除します
(関数テンプレート) [edit]