C++でLINQを使う

Posted by on in Programming

C++で面白いライブラリがあったので紹介します。

LINQって何?

LINQ(統合言語クエリ)はC#の機能でコンテナに対してクエリを発行して結果を抽出します。 詳細はMSDNのドキュメントを参照してください。 https://docs.microsoft.com/ja-jp/dotnet/csharp/linq/

LINQ for C++

LINQ for C++はこの、LINQをC++で使用できるようにしたライブラリです。

https://archive.codeplex.com/?p=cpplinq

使い方も簡単で、GitHubで公開されているヘッダファイルをインクルードするだけです。

https://github.com/mrange/cpplinq

では、実際に使ってみましょう。

#pragma hdrstop
#pragma argsused

#ifdef _WIN32
#include <tchar.h>
#else
  typedef char _TCHAR;
  #define _tmain main
#endif

#include <stdio.h>
#include <iostream>
#include "CppLinq/cpplinq.hpp"    


int computes_a_sum ()
{
  using namespace cpplinq;
  int ints[] = {3,1,4,1,5,9,2,6,5,4};

  return
      from_array (ints)
    >>  where ([](int i) {return i%2 ==0;})     // 偶数を抽出する
    >>  sum ()                                  // 抽出した値を合計する
    ;
}


int _tmain(int argc, _TCHAR* argv[])
{
  std::cout << computes_a_sum() << std::endl;

  return 0;
}

 

C++Builderでビルドしてみますが、C++11の機能を使っているので、[プロジェクト|オプション|C++コンパイラ]で「従来のBorlandコンパイラの使用」のチェックを外してください。

実行結果です。

このように配列から偶数を抽出してその合計が出力されました。新しいC++コンパイラを使用することによって沢山のライブラリも使用できるようになりました。コンパイラ自体も10.2.3のが公開されていますので、是非ともお試し下さい。

 

 

2018年4月23日~5月4日までの月~金曜に毎日ブログを更新。Delphi / C++Builderに関する技術記事からエンジニアの日常まで、さまざまな話題を投稿します。お楽しみに!

日本人スタッフブログを一覧表示できる、こちらのページをブックマークしてください。



About
Gold User, No rank,
Sales Consultant at Embarcadero Technologies.

Comments

  • Alex B.
    Alex B. Wednesday, 9 May 2018

    Hi, can you please upload an English version of your post here? It's very interesting!
    I still found a lot of interesting things from Japan posts here, but automatic translations does not bring justice to the meaning of articles.

    I kindly encourage all users from Japan to share their content also in English even if I understand the importance to use your own language (especially when you post on embarcadero.jp).

    Thanks anyway.

  • Shinji Chikugi
    Shinji Chikugi Tuesday, 15 May 2018

    Thanks for your comment. I'll translate my some articles to English. Please wait few days.

  • Please login first in order for you to submit comments
  • Page :
  • 1

Check out more tips and tricks in this development video: