项目作者: huangmingchuan

项目描述 :
用 C++ 11 实现的 LINQ to Object
高级语言: C++
项目地址: git://github.com/huangmingchuan/CppLinq.git
创建时间: 2015-11-24T03:36:03Z
项目社区:https://github.com/huangmingchuan/CppLinq

开源协议:

下载


CppLinq

用 C++ 11 实现的 LINQ to Object,我在这里写了篇文章来介绍它:

一个例子:

  1. struct person
  2. {
  3. string name;
  4. };
  5. struct pet
  6. {
  7. string name;
  8. person owner;
  9. };
  10. person fek = { "尔康, 福"};
  11. person ylc = { "良辰, 叶" };
  12. person hmj = { "美景, 花" };
  13. person lks = { "看山, 刘" };
  14. person lat = { "傲天, 龙" };
  15. person persons[] = { ylc, hmj, lks, lat };
  16. pet dog = { "斯派克", ylc };
  17. pet cat = { "汤姆", ylc };
  18. pet mouse = { "杰瑞", hmj };
  19. pet bird = { "愤怒的小鸟", lks };
  20. pet pig = { "风口上的猪", fek };
  21. pet pets[] = { dog, cat, mouse, bird, pig };
  22. auto person_name = [](const person& p) { return p.name; };
  23. auto pet_owner_name = [](const pet& p) { return p.owner.name; };
  24. auto result = [](const person& p, const pet& pp) { return std::make_tuple(p.name, pp.name); };
  25. /*
  26. 良辰, 叶 : 斯派克
  27. 良辰, 叶 : 汤姆
  28. 美景, 花 : 杰瑞
  29. 看山, 刘 : 愤怒的小鸟
  30. */
  31. for (auto x : from(persons).join(from(pets), person_name, pet_owner_name, result))
  32. {
  33. cout << get<0>(x) << " : " << get<1>(x) << endl;
  34. }