Submit Search
Upload
最近のC++ @ Sapporo.cpp #5
•
7 likes
•
4,680 views
Kohsuke Yuasa
Follow
Sapporo.cpp 札幌C++勉強会 #5で発表した、最近のC++の流れを紹介した資料。
Read less
Read more
Report
Share
Report
Share
1 of 36
Download now
Download to read offline
Recommended
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
Kohki Miki
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
Hiro H.
Sapporocpp#2 exception-primer
Sapporocpp#2 exception-primer
Kohsuke Yuasa
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
Hiro H.
C++ template-primer
C++ template-primer
Kohsuke Yuasa
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
Hiro H.
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
Hiro H.
Introduction to boost test
Introduction to boost test
Kohsuke Yuasa
Recommended
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
Kohki Miki
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
Hiro H.
Sapporocpp#2 exception-primer
Sapporocpp#2 exception-primer
Kohsuke Yuasa
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
Hiro H.
C++ template-primer
C++ template-primer
Kohsuke Yuasa
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
Hiro H.
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
Hiro H.
Introduction to boost test
Introduction to boost test
Kohsuke Yuasa
rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!
Hiro H.
オーディオ用レベルメータを作ってみよう
オーディオ用レベルメータを作ってみよう
Kohsuke Yuasa
C++用将棋ライブラリ"OpenShogiLib"の紹介
C++用将棋ライブラリ"OpenShogiLib"の紹介
Hiro H.
Study3 boost
Study3 boost
Kohsuke Yuasa
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Hiro H.
名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗
Hiro H.
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
Kohsuke Yuasa
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
Hiro H.
2011.6.4 TDD bootcamp 札幌2.0 自己紹介LT
2011.6.4 TDD bootcamp 札幌2.0 自己紹介LT
Hiro H.
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
Kohsuke Yuasa
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
GitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作る
Naonori Inao
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
Decksetがよかった話
Decksetがよかった話
Kohki Miki
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
DTrace for biginners part(2)
DTrace for biginners part(2)
Shoji Haraguchi
D3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーション
Kohei Kadowaki
社会ネットワーク分析第7回
社会ネットワーク分析第7回
Satoru Mikami
復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
Yuta Matsumura
20130126 OpenData and Android
20130126 OpenData and Android
Kenichi Ohwada
More Related Content
Viewers also liked
rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!
Hiro H.
オーディオ用レベルメータを作ってみよう
オーディオ用レベルメータを作ってみよう
Kohsuke Yuasa
C++用将棋ライブラリ"OpenShogiLib"の紹介
C++用将棋ライブラリ"OpenShogiLib"の紹介
Hiro H.
Study3 boost
Study3 boost
Kohsuke Yuasa
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Hiro H.
名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗
Hiro H.
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
Kohsuke Yuasa
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
Hiro H.
2011.6.4 TDD bootcamp 札幌2.0 自己紹介LT
2011.6.4 TDD bootcamp 札幌2.0 自己紹介LT
Hiro H.
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
Kohsuke Yuasa
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
GitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作る
Naonori Inao
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
Decksetがよかった話
Decksetがよかった話
Kohki Miki
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
Viewers also liked
(17)
rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!
オーディオ用レベルメータを作ってみよう
オーディオ用レベルメータを作ってみよう
C++用将棋ライブラリ"OpenShogiLib"の紹介
C++用将棋ライブラリ"OpenShogiLib"の紹介
Study3 boost
Study3 boost
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
2011.6.4 TDD bootcamp 札幌2.0 自己紹介LT
2011.6.4 TDD bootcamp 札幌2.0 自己紹介LT
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
GitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作る
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Decksetがよかった話
Decksetがよかった話
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Similar to 最近のC++ @ Sapporo.cpp #5
DTrace for biginners part(2)
DTrace for biginners part(2)
Shoji Haraguchi
D3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーション
Kohei Kadowaki
社会ネットワーク分析第7回
社会ネットワーク分析第7回
Satoru Mikami
復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
Yuta Matsumura
20130126 OpenData and Android
20130126 OpenData and Android
Kenichi Ohwada
JDK8で変わるJavaプログラミング
JDK8で変わるJavaプログラミング
Go Hayakawa
#crazy-js Quiz
#crazy-js Quiz
Takaki Hoshikawa
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
D3js入門 - Code for Kobe 可視化勉強会資料
D3js入門 - Code for Kobe 可視化勉強会資料
充彦 保田
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
gree_tech
Learning spaerk chapter03
Learning spaerk chapter03
Akimitsu Takagi
10分で分かるR言語入門ver2_0906
10分で分かるR言語入門ver2_0906
Nobuaki Oshiro
Flutterを体験してみませんか
Flutterを体験してみませんか
cch-robo
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について
Haruka Ozaki
Mecha-Mozilla
Mecha-Mozilla
Daisuke Akatsuka
three.js はじめましょ
three.js はじめましょ
Hiroaki Okubo
(うしなわれた)Fluentd output-convert_structure
(うしなわれた)Fluentd output-convert_structure
tod esking
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
Hiroshi Oyamada
Linux女子部勉強会 2012年4月21日
Linux女子部勉強会 2012年4月21日
Ryuichi Ueda
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
Akihiko Matuura
Similar to 最近のC++ @ Sapporo.cpp #5
(20)
DTrace for biginners part(2)
DTrace for biginners part(2)
D3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーション
社会ネットワーク分析第7回
社会ネットワーク分析第7回
復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
20130126 OpenData and Android
20130126 OpenData and Android
JDK8で変わるJavaプログラミング
JDK8で変わるJavaプログラミング
#crazy-js Quiz
#crazy-js Quiz
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
D3js入門 - Code for Kobe 可視化勉強会資料
D3js入門 - Code for Kobe 可視化勉強会資料
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
Learning spaerk chapter03
Learning spaerk chapter03
10分で分かるR言語入門ver2_0906
10分で分かるR言語入門ver2_0906
Flutterを体験してみませんか
Flutterを体験してみませんか
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について
Mecha-Mozilla
Mecha-Mozilla
three.js はじめましょ
three.js はじめましょ
(うしなわれた)Fluentd output-convert_structure
(うしなわれた)Fluentd output-convert_structure
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
Linux女子部勉強会 2012年4月21日
Linux女子部勉強会 2012年4月21日
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
最近のC++ @ Sapporo.cpp #5
1.
最近のC++ Sapporo.cpp 2013/12/07 1 2013年12月7日土曜日
2.
あわせて読みたい ✤ C++標準化委員会の江添さんの資料 ✤ http://ezoeryou.github.io/cpp-history/index.html#/ 2 2013年12月7日土曜日
3.
C++とは ✤ ✤ Bjarne Stroustrupが開発した、 静的型付きマルチパラダイム言語 以下のようなパラダイムをサポート ✤ 手続き的プログラミング ✤ オブジェクト指向プログラミング ✤ ジェネリックプログラミング 3 2013年12月7日土曜日
4.
C++の歴史 ✤ C with Classes ✤ C++98 ✤ C++14 ✤ C++
(Release 1.0) ✤ C++03 ✤ C++17 ✤ C++ (Release 2.0) ✤ C++ TR1 ✤ C++ (Release 3.0) ✤ C++11 4 2013年12月7日土曜日
5.
C++の歴史 ✤ C with Classes ✤ 1980年頃 ✤ クラス/派生クラスの機能 ✤ 仮想関数はまだ無い ✤ コンストラクタ/デストラクタ ✤ friendクラス ✤ インライン関数 ✤ 関数のデフォルト引数 ✤ 代入演算子のオーバーロード ✤ などなど 5 2013年12月7日土曜日
6.
C++の歴史 ✤ C with ClassesからC++へ ✤ 1983年頃 6 2013年12月7日土曜日
7.
C++の歴史 ✤ C++ (Release 1.0) ✤ 1986年 ✤ 仮想関数 ✤ 関数名/演算子のオーバーロード ✤ 参照 ✤ 定数 ✤ readonlyキーワード(現在のconstに相当) ✤ 一行コメント ✤ などなど 7 2013年12月7日土曜日
8.
C++の歴史 ✤ C++ (Release 2.0) ✤ 1989年 ✤ 多重継承 ✤ 抽象クラス ✤ staticメンバ関数 ✤ constメンバ関数 ✤ 抽象クラス(純粋仮想関数) ✤ ->演算子のオーバーロード ✤ protectedメンバ ✤ などなど 8 2013年12月7日土曜日
9.
C++の歴史 ✤ C++ (Release 3.0) ✤ 1991年 ✤ テンプレート ✤ 例外処理
(Release 3.0の変種にて) 9 2013年12月7日土曜日
10.
C++の歴史 ✤ ANSI/ISO 標準規格草案 ✤ 1996年 ✤ 名前空間 ✤ mutableキーワード ✤ メンバテンプレート ✤ 実行時型情報 ✤ bool型 ✤ などなど 10 2013年12月7日土曜日
11.
C++の歴史 ✤ C++98 ✤ ISO/IEC 14882:1998 ✤ C++初の標準規格 11 2013年12月7日土曜日
12.
C++の歴史 ✤ C++03 ✤ ISO/IEC 14882:2003 ✤ C++98のバグフィックス的なもの 12 2013年12月7日土曜日
13.
C++の歴史 ✤ C++ TR1 ✤ ✤ ✤ ISO/IEC TR
19768:2007 Draft Technical Report on C++ Librarie Extensions C++のこれまでの知見を元に、 ハッシュテーブルやスマートポインタなど、 ライブラリ関係で今後のC++標準に 追加されるであろう機能をまとめたもの。 →若干の修正を経て、実際に、 この次の規格 C++11 に追加された。 13 2013年12月7日土曜日
14.
現在のC++ ✤ C++11 ✤ ISO/IEC 14882:2011 ✤ 現在のC++の標準規格 ✤ ✤ C++03から言語機能を大幅に拡張しつつ、過去との互換 性は最大限残している 規格策定前は C++0x
と呼ばれていた 14 2013年12月7日土曜日
15.
C++03 → C++11 ✤ 言語機能の追加 ✤ ムーブセマンティクス ✤ auto,
decltypeなど型推論の機能 ✤ 定数式(constexpr) ✤ Range-based for ✤ ラムダ式 ✤ nullptr ✤ override/final ✤ 可変長テンプレート ✤ などなど 15 2013年12月7日土曜日
16.
C++03 → C++11 ✤ ライブラリの追加 ✤ <array>
: 配列クラス ✤ <atomic> : アトミック変数 ✤ <thread>/<mutex>/<future> : マルチスレッド関係 ✤ <chrono> : 時間計算 ✤ <unordered_map> : ハッシュマップ ✤ <random> : 乱数ライブラリ ✤ <regex> : 正規表現 ✤ <function> : 関数オブジェクトクラス ✤ などなど 16 2013年12月7日土曜日
17.
C++11の利点 ✤ C++03からC++11になってどんなことが可能に なったか。 ✤ ムーブセマンティクスによって効率的なプログラミング ✤ ラムダ式によって直感的なプログラミング ✤ Range-based forによって簡潔なプログラミング 17 2013年12月7日土曜日
18.
std::vector<Data> ReadData(std::string filepath) {
std::ifstream ifs(filepath.c_str()); std::vector<Data> ret; //! 何らかのデータ読み込み for( ; ; ) { Data d = read_one_data(ifs); if(!ifs) { break; } ret.push_back(std::move(d)); // ムーブ } return ret; // 戻り値は暗黙的に自動でムーブ } std::vector<Data> file_data = ReadData("DataFile.dat"); 18 2013年12月7日土曜日
19.
std::vector<Data> ReadData(std::string filepath) {
std::ifstream ifs(filepath.c_str()); std::vector<Data> ret; //! 何らかのデータ読み込み for( ; ; ) { Data d = read_one_data(ifs); if(!ifs) { break; } ret.push_back(std::move(d)); // ムーブ } return ret; // 戻り値は暗黙的に自動でムーブ } ムーブ可能な型は、ムーブの文脈においてコピーよりも効率 的な所有権の移動を実現する。 std::vector<Data> file_data = ReadData("DataFile.dat"); vectorでは、コピーの代わりにムーブを使用すると、内部 の配列データを指すポインタだけを移しかえたりする。 19 2013年12月7日土曜日
20.
std::thread th(
// スレッドで行う処理をラムダ式で指定 [](std::vector<Data> data) { ProcessData(data); }); 20 2013年12月7日土曜日
21.
std::thread th(
// スレッドで行う処理をラムダ式で指定 [](std::vector<Data> data) { ProcessData(data); }); std::threadクラスは、コンストラクタで th.join(); 関数や関数オブジェクトやラムダ式のような ”呼び出し可能な何か”を受け取り、 それを別スレッドで呼び出す。 21 2013年12月7日土曜日
22.
template<class Container> void ProcessData(Container
&container) { // Range-based forですべての要素を辿る for(Data &data: container) { process_one_data(data); std::cout << data.result() << std::endl; } } 22 2013年12月7日土曜日
23.
template<class Container> void ProcessData(Container
&container) { // Range-based forですべての要素を辿る for(Data &data: container) { process_one_data(data); std::cout << data.result() << std::endl; } } Range-based forは配列やbegin(), end()メ ンバ関数を持つクラスなどからすべての要素 を渡る。 23 2013年12月7日土曜日
24.
これからのC++ ✤ C++14 ✤ C++17 24 2013年12月7日土曜日
25.
C++14 ✤ ✤ 2014年策定を目指して作業が進んでいるC++の 新しい規格 C++11の言語仕様に対する、バグフィックスと いくつかの改善(C++98に対するC++03のよう なもの) 25 2013年12月7日土曜日
26.
C++14 ✤ 言語機能 ✤ 2進数リテラルサポート ✤ 数値区切り ✤ 実行時サイズ配列(VLA) ✤ 汎用ラムダキャプチャー ✤ [[deprecated]] ✤ 関数の戻り値の型推定 ✤ constexpr関数の制限緩和 ✤ などなど 26 2013年12月7日土曜日
27.
C++14 ✤ ライブラリ ✤ make_unique() ✤ コンパイル時整数シーケンス ✤ 共有ロック ✤ exchange()関数 ✤ エイリアステンプレート版のType Traits ✤ std::complexのユーザー定義リテラル ✤ 文字列オブジェクトリテラル ✤ 時間リテラル ✤ などなど 27 2013年12月7日土曜日
28.
C++14まとめ記事 ✤ 「C++14の新機能」 http://ezoeryou.github.io/kabukiza-tech2-slide/#/ ✤ 「C++14にやってくる見た目に分かりやすい新機能」 http://cpplover.blogspot.jp/2013/05/c14.html ✤ 「C++14の言語拡張まとめ」 http://d.hatena.ne.jp/faith_and_brave/20131122/1385094436 28 2013年12月7日土曜日
29.
C++17 ✤ ✤ ✤ C++の次のメジャーアップデートとして予定され ている規格 ただし、2017年に策定されると決まっているわ けではない 以前はC++1yと呼ばれていた 29 2013年12月7日土曜日
30.
C++17までのプロセス ✤ C++14とその後に続く言語仕様の策定作業と並 行して、TS(Technical Specification)と呼ばれる、特定の 機能に話題を絞ったドキュメントを作成 ✤ Filesystem TS ✤ Networking
TS ✤ Concepts Lite TS ✤ Library Fundamentals TS ✤ Array Extensions TS ✤ Extensions of Concurrency ✤ Extensions of Parallelism 30 2013年12月7日土曜日
31.
例)Filesystem TS ✤ Boost.Filesystemを元に設計 ✤ http://www.open-std.org/jtc1/sc22/wg21/docs/ papers/2013/n3803.pdf 31 2013年12月7日土曜日
32.
namespace fs =
boost::filesystem; int main() { const fs::path path("dir1/a.txt"); // コピー元 const fs::path dest("dir2/a.txt"); // コピー先 try { fs::copy_file(path, dest); } catch (fs::filesystem_error& ex) { std::cout << ex.what() << std::endl; throw; } } ※)Boost.Filesystemの例 32 2013年12月7日土曜日
33.
例)Parallelism TS ✤ CUDAのThrustライブラリの設計を参考に、 STLのアルゴリズムに並列計算の機能を加える 33 2013年12月7日土曜日
34.
std::vector<int> vec =
... // これまで通りの、シーケンシャルソート std::sort(vec.begin(), vec.end()); // 明示的なシーケンシャルソート std::sort(std::seq, vec.begin(), vec.end()); // 並列実行の許可 std::sort(std::par, vec.begin(), vec.end()); 34 2013年12月7日土曜日
35.
C++17 ✤ 2017年を目指し、新たな言語仕様とTSとを統合 して、メジャーアップデート 35 2013年12月7日土曜日
36.
ロードマップ http://isocpp.org/std/status 36 2013年12月7日土曜日
Download now