std::list::remove if

提供: C++入門
移動: 案内検索
スポンサーリンク

std::list::remove_if とは、条件式を指定して、std::listの要素を削除するテンプレート関数です。remove_ifにした関数として、std::list::remove では、std::listの特定の要素のみが削除できます。

読み方

std::list::remove_if
えすてぃーでぃー りすと りむーぶ いふ
std::list::remove
えすてぃーでぃー りすと りむーぶ

概要

コンテナから条件式にマッチしたすべての要素を削除します。

template <class Predicate>
  void remove_if (Predicate pred);

それらのオブジェクトのデストラクタは呼び出され、削除されたエレメント分、コンテナのサイズが小さくなります。

std::list::eraceでは、ポジション(イテレータを使ったとき)によって要素を削除します。この関数(std::list::remove)では、値によって要素を削除します。 この関数と似た std::list::remove があります。removeでは、指定した値にマッチする要素を削除します。

条件式を指定してコンテナから値を削除する例 list_remove_if1.cpp

ソースコード list_remove_if1.cpp

/*
 * list1.cpp
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
 
#include <iostream>
#include <list>
using namespace std;
 
// 奇数ならtrue
bool is_odd(const int& v) {
        return (v%2)==1;
}
 
int
main(int argc, char const* argv[])
{
        list<int> list1 = { 1,2,3,1,2,3,2,8,9 };
 
        list1.remove_if(is_odd);
 
        for (auto x: list1) {
                cout << x << " ";
        }
        cout << endl;
        return 0;
}

コンパイル

g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \
-Wl,-rpath=/usr/local/lib/gcc49  list_remove_if1.cpp -o list_remove_if1

実行例

奇数は、すべて削除されました。

% ./list_remove_if1
2 2 2 8

関連項目




スポンサーリンク