【C++】LINQ for C++の使い方
C++でLINQ( Language-Integrated Query )を使う方法を探してたら、これに辿り着いた。
LINQ for C++とは
LINQと同じような機能を提供するライブラリ。
ダウンロード
使い方
- 上記からダウンロードしたデータの
CppLinq
フォルダ内に存在するcpplinq.hpp
をインクルードする。 range
オブジェクトを作成する。(from
・from_array
関数でコンテナを変換する。または、range
・repeat
などの関数から作成する。 )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_vector | std::vector に変換する。 |
to_list | std::list に変換する。 |
for_each | 各要素を順に利用する。 |