Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

boost - std - C#

2,504 views

Published on

  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THI5 BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THI5 BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THI5 BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THI5 BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

boost - std - C#

  1. 1. boost – std - C# 株式会社Codeer 石川達也 http://www.codeer.co.jp/
  2. 2. 自己紹介 石川達也 株式会社Codeer代表取締役 Microsoft MVP for C# C++は嗜む程度
  3. 3. 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 3 プログラム経験はこんな感じです。 C++ C Java C# 入社 会社辞める→フリー Codeer設立
  4. 4. 4 1999 Boost - 1999/12/30(Early releasesが14日にあった) 2000 2001 2002 Let’s Boostスタート 2003 2004 Boost本 2005 2006 2007 2008 2009 2010 2011 C++11 2012 2013 2014
  5. 5. 5 1999 Boost - 1999/12/30(Early releasesが14日にあった) 2000 C#発表(6月) 2001 2002 Let’s Boostスタート 2003 C#1.1 2004 Boost本 2005 C#2.0(11月) 2006 2007 2008 2009 2010 2011 C++11 2012 2013 2014
  6. 6. 6 あれは2005年の春 すっかりJavaにかぶれていたころ・・・ 久しぶりにC++の仕事に就くことになりました。 Javaサイコー
  7. 7. 7 なんじゃこりゃー! めっちゃメモリリークしとるやんけ! こんな複雑なコードでnew delete やったら、そらリークするわな・・・。 大規模アプリ開発は GCなしではやってられまへん
  8. 8. 8 Boostとの遭遇–shared_ptr- shared_ptrというのがあってだね え、メモリ管理しなくていいの?
  9. 9. 9 Boostとの遭遇–shared_ptr- 説明不要! みんな大好きshared_ptr! 保持者がいなくなったら、破棄してくれる。 GCより厳密なタイミングで破棄! もちろんC++11で標準に入っています。
  10. 10. 10 Boostとの遭遇–shared_ptr- みんな大好きshared_ptr! デリータを覚えているからdllの壁を越えられる Shared_ptr Heap Heap
  11. 11. 11 Boostとの遭遇–shared_ptr- 標準に入れなかった子もいました。 shared_array //これダメデストラクタが呼ばれない boost::shared_ptr<A> a(new A[3]); //delete[]が呼ばれる boost::shared_array<A> a(new A[3]);
  12. 12. 12 Boostとの遭遇–shared_ptr- 標準に入れなかった子もいました。 shared_array //こう書くんだってさ std::shared_ptr<A> a( new A[3], std::default_delete<A[]>());
  13. 13. 13 Boostとの遭遇 他にもいくつか使ったけど、 やっぱりshared_ptrが ダントツの使用率でした。
  14. 14. 14 時は流れ・・・・ すっかりC++できる気になってたころ・・・ テンプレートライブラリつくったぜー。 ↑読み返す気が起きない やっぱpimplだよねー。 ↑変な書き方で読みづらい ネイティブ以外ありえないよねー。 ↑根拠なし
  15. 15. 15 C#に出会いました! え、中間言語になるの? そんな軟弱なものやる気がおきんなー。 2007年の暑い夏の日・・・
  16. 16. 16 C#に出会いました! なんじゃこりゃー 書きやすい 意外に速い C#サイコー! でも、Genericは・・・ 2.0だったけど
  17. 17. 17 C#に出会いました! あれ、だったら同じ.Net使える C++/CLIとかもっと良いんじゃね?
  18. 18. 18 C#に出会いました! ・・・・ やっぱC#サイコー
  19. 19. 19 C#に出会いました! foreach object型 delegate これC++でも使えたらいいのにね
  20. 20. 20 これC++でも使えたらいいのにね foreach object型 delegate
  21. 21. 21 foreach BOOST_FOREACH std::vector<A> vec; BOOST_FOREACH(A e, vec) {} まさかのマクロで実装!
  22. 22. 22 foreach BOOST_FOREACH std::vector<A> vec; BOOST_FOREACH(A e, vec) {} //参照もOK BOOST_FOREACH(A& e, vec) {} BOOST_FOREACH(const A& e, vec) {}
  23. 23. 23 foreach BOOST_FOREACH //これはコンパイル通らない std::map<int, int> m; BOOST_FOREACH( std::map<int, int>::value_type e, m) { } マクロだから,に弱い
  24. 24. 24 foreach BOOST_FOREACH //これならOK typedef std::map<int, int> Map; Map m; BOOST_FOREACH( Map::value_type e, m) { }
  25. 25. 25 foreach C++11では std::vector<A> vec; for(auto e : vec) {} //参照もOK for(const auto e : vec) {} for(const auto& e : vec) {} 11ではautoって書く方がオシャレ
  26. 26. 26 foreach MS方言for each for each(A a in vec){} C++11以前でも使えてた!
  27. 27. 27 foreach MS方言for each for each(A a in vec){} //const 参照もOK for each(const A& a in vec){}
  28. 28. 28 foreach MS方言for each for each(A a in vec){} //const 参照もOK for each(const A& a in vec){} //参照はコンパイル通らない・・・(´・ω・`) for each(A& a in vec){}
  29. 29. 29 役に立つMS方言講座 interface //classの代わりにinterfaceって書ける! interface IA { public: virtual ~IA(){} virtual void Func() = 0; }; interfaceであることを強調・・・
  30. 30. 30 役に立つMS方言講座 propertyが使える class A { int b; public: int GetB() const { return b; } void SetB(int val) { b = val; } public: __declspec(property( get = GetB, put = SetB)) int B; };
  31. 31. 31 役に立つMS方言講座 propertyが使える #define PROPERTY( _t, _m ) private: _t m_##_m ; public: __declspec(property(get=get##_m, put=set##_m)) _t _m ; _t get##_m() { return m_##_m; } void set##_m( _t value ) { m_##_m = value; }; マクロを作ると書きやすい ↓のサイトに書いてたよ http://www.moonmile.net/blog/archives/3557
  32. 32. 32 役に立つMS方言講座 propertyが使える PROPERTY( int, Number ); class A { PROPERTY( int, B); }; こんな感じ
  33. 33. 33 役に立つMS方言講座 propertyが使える A a; a.B = 100; 使う側では便利かも
  34. 34. 34 役に立つMS方言講座 event struct A { __event void Func(); };
  35. 35. 35 役に立つMS方言講座 event struct B { A* pA; void Func(){} B(A& a) : pA(&a) { __hook(&A::Func, pA, &B::Func, this); } ~B() { __unhook(&A::Func, pA, &B::Func, this); } };
  36. 36. 36 これC++でも使えたらいいのにね foreach object型 delegate
  37. 37. 37 object型 boost::any //何でも入るよー int i = 0; long l = 1; boost::any a = i; a = l;
  38. 38. 38 object型 boost::any //型情報も取れちゃう if (a.type() == typeid(long)) { } else if (a.type() == typeid(int)) { }
  39. 39. 39 object型 boost::any //キャストで中身取得 l = boost::any_cast<long>(a); //失敗したら例外 try { i = boost::any_cast<int>(a); } catch (boost::bad_any_cast e){}
  40. 40. 40 object型 boost::any //shared_ptrと合わせたらもっとポイよねー boost::any a = std::make_shared<X>(); 便利だけど、標準化はされてないよね?
  41. 41. 41 object型 boost::any 型をボンヤリさせるテクニックは Type Erasureって言うんだって boost::shared_ptrとか boost::function にも使われているらしい。
  42. 42. 42 これC++でも使えたらいいのにね foreach object型 delegate
  43. 43. 43 delegate class Test { int x = 0; public void MyAction() { x = 10; } public void Main() { Action a = MyAction; a(); } } そもそも何が便利? C# 単なる関数ポインタではなく インスタンスに結びついている
  44. 44. 44 delegate boost::bind class Test { int x; void MyAction(){ x = 10; } public: void Main() { boost::function<void()> a = boost::bind(&Test::MyAction, this); a(); } };
  45. 45. 45 delegate C++11では標準の仲間入り! class Test { int x; void MyAction(){ x = 10; } public: void Main() { std::function<void()> a = std::bind(&Test::MyAction, this); a(); } };
  46. 46. 46 delegate そもそも何が便利? C# int i = 0; Action a = ()=> { i++; } a(); ササっと書ける ローカル変数取り込める Assert.AreEqual(i, 1);
  47. 47. 47 delegate boost::lambda using namespace boost::lambda; boost::function<int(int)> a = _1 + 3; int i = a(5); なんじゃこりゃ?
  48. 48. 48 delegate boost::lambda boost::lambda::placeholder1_type& _1 = free1; なんじゃこりゃ?
  49. 49. 49 delegate boost::lambda placeholder1_type BOOST_LAMBDA_BE(operator+ BOOST_LAMBDA_BE(operator- BOOST_LAMBDA_BE(operator* BOOST_LAMBDA_BE(operator/ ・・・・ こいつがoperator hoge を山ほど実装しとるわけですな
  50. 50. 50 delegate boost::lambda boost::function<int(int)> a = //operator +が実行され、 //関数オブジェクトが返るのでした。 _1 + 3; つまり、引数ありで、一文のみ。
  51. 51. 51 delegate int i = 0; auto a = [&]() { i++; }; a(); C++11 C++11なら言語でサポートされている
  52. 52. 52 LINQ LINQも重要なんだけど、 それを実現するための機能の方がもっと重要 型推論だってLINQの戻り値の型書くの嫌 ラムダサラッと処理作って渡せるのがいいのよ (ここが98のアルゴリズムの弱点) 匿名型任意に抽出したデータを返せる 拡張メソッドあたかも、そのコンテナのメソッドのように 使える これらはLINQ以外でもヘビーに使われる
  53. 53. 53 LINQ C++11では? 型推論auto ラムダ言語サポート 匿名型・・・・ 拡張メソッド・・・・
  54. 54. 54 匿名型 void main() { var a = Decl (() => { return new { x = 1, y = "hoge" }; }); var ret = a(); } //型推論を助けてやらんとあかんけど static Func<T> Decl<T>(Func<T> x) { return x; } そもそもC#では
  55. 55. 55 匿名型 []() { struct{ int a; } a; return a; }; C++ できるかと思ったら さすがに怒られたw
  56. 56. 56 C++で拡張メソッド そもそもC#では class A { public int a{get; set;} } static class Aextensions { public static void X(this A a) { a.a = 100; } } A a; a.X();
  57. 57. 57 C++で拡張メソッド 実はC++でもその試みはある! でも、ちょっと広い心が必要・・・
  58. 58. 58 C++で拡張メソッド 実はC++でもその試みはある! //結果から言うとこうなります。 A a; a|X(); 関数オブジェクトとoperator演算子で解決した。 で、operator.はないから|を使うらしい。 まあ、|じゃなくても、納得いくものならなんでも・・・
  59. 59. 59 C++で拡張メソッド a|X(); struct A { int a; }; struct XCore { //③ void operator()(A& a){ a.a = 100; } }; //② void operator | (A& a, XCore& b) { b(a); } //① XCore X() { return XCore(); } そこまでしてやりたいんかい!
  60. 60. 60 C++で拡張メソッド a|X(); struct A { int a; }; struct XCore { //③ void operator()(A& a){ a.a = 100; } }; //② void operator | (A& a, XCore& b) { b(a); } //① XCore X() { return XCore(); } そこまでしてやりたいんかい!
  61. 61. 61 C++で拡張メソッド でもおかげで、メソッドチェーンができます。 vector<int> vec; auto ret = vec | filtered([](const int &e) {...}) | filtered([](const int &x) {...}) | transformed([](const int &x) {...}); こう見るとパイプっぽくてカッコいい!
  62. 62. 62 LINQ C++11では? 型推論auto ラムダ言語サポート 匿名型×あかんかった 拡張メソッド○ まあまあイケル
  63. 63. 63 LINQ C++11では? ・cpplinq ・boost.RangeのOven拡張 とかあるんだって ↓ここに書いてありました http://d.hatena.ne.jp/wordi/20131116/p1
  64. 64. 64 ご清聴ありがとうございました!

×