【C++】LINQ for C++の使い方

2018年10月19日
CPP

C++でLINQ( Language-Integrated Query )を使う方法を探してたら、これに辿り着いた。

LINQ for C++とは

LINQと同じような機能を提供するライブラリ。

ダウンロード

使い方

  1. 上記からダウンロードしたデータのCppLinqフォルダ内に存在するcpplinq.hppをインクルードする。
  2. rangeオブジェクトを作成する。( fromfrom_array関数でコンテナを変換する。または、rangerepeatなどの関数から作成する。 )
  3. rangeオブジェクトに右シフト演算子を用いた上でデータを操作する関数を呼び出す。( メソッドチェーンと同じ形で使用可。 )

サンプル

#include <iostream>
#include "cpplinq.hpp"

int main() 
{
    using namespace cpplinq;

    const int VALUES[] = { 0, 1, 2, 3, 4, 5 };

    from_array( VALUES )
        >> where    ( []( int value ) { return value % 2 == 0; } )
        >> for_each ( []( int value ) { std::cout << value << std::endl; } )
    ;

    return 0;
}

よく使用する関数

名前機能
where条件を満たす要素のみに抽出する。
select各要素に対して任意の処理をかけた新たな要素群を作成する。
distinct重複を除く。
orderby_ascending要素を昇順に並び替える。
orderby_descending要素を降順に並び替える。
any条件を満たす要素が存在するか判断する値を取得する。
all全ての要素が条件を満たすか判断する値を取得する。
contains指定した要素を含むか判断する値を取得する。
first_or_default最初の要素、またはデフォルト値を取得する。
last_or_default最後の要素、またはデフォルト値を取得する。
sum各要素を合計した値を取得する。
max最大値を取得する。
min最小値を取得する。
count要素数を取得する。
to_vectorstd::vectorに変換する。
to_liststd::listに変換する。
for_each各要素を順に利用する。