Submit Search
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
0 likes
1,521 views
Hiro H.
1 of 45
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
More Related Content
PDF
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
PDF
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
PDF
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
PDF
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
Hiro H.
PDF
C++のライブラリを簡単に眺めてみよう
Hiro H.
PDF
関数の最小値を求めることから機械学習へ
Hiro H.
PDF
Pfi Seminar 2010 1 7
Preferred Networks
KEY
core dumpでcode golf
Nomura Yusuke
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
2011.7.3 札幌C++勉強会#2「C++のマクロはどこまで関数をいじれるのか」
Hiro H.
C++のライブラリを簡単に眺めてみよう
Hiro H.
関数の最小値を求めることから機械学習へ
Hiro H.
Pfi Seminar 2010 1 7
Preferred Networks
core dumpでcode golf
Nomura Yusuke
What's hot
(20)
PDF
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
PPT
ZFSのソースコードをチラ見してみる
Koichi Suzuki
PDF
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
PPTX
Map
kikairoya
PDF
C++ Template Meta Programming の紹介@社内勉強会
Akihiko Matuura
PDF
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
Google Developer Relations Team
PDF
Boost tour 1.60.0 merge
Akira Takahashi
PDF
闇魔術を触ってみた
Satoshi Sato
PDF
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
PDF
リテラル文字列型までの道
Satoshi Sato
PDF
Pythonデータ分析 第3回勉強会資料 8章
Makoto Kawano
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
PDF
組み込みでこそC++を使う10の理由
kikairoya
PDF
Gensim
saireya _
PDF
brainfuckを吐く自作言語bf-reusable
roodni
PDF
ゲーム開発者のための C++11/C++14
Ryo Suzuki
PPT
C++でHello worldを書いてみた
firewood
PDF
Emcjp item21
MITSUNARI Shigeo
PPTX
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
PDF
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
ZFSのソースコードをチラ見してみる
Koichi Suzuki
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Map
kikairoya
C++ Template Meta Programming の紹介@社内勉強会
Akihiko Matuura
Google Developer Day 2010 Japan: プログラミング言語 Go (鵜飼 文敏)
Google Developer Relations Team
Boost tour 1.60.0 merge
Akira Takahashi
闇魔術を触ってみた
Satoshi Sato
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
リテラル文字列型までの道
Satoshi Sato
Pythonデータ分析 第3回勉強会資料 8章
Makoto Kawano
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
組み込みでこそC++を使う10の理由
kikairoya
Gensim
saireya _
brainfuckを吐く自作言語bf-reusable
roodni
ゲーム開発者のための C++11/C++14
Ryo Suzuki
C++でHello worldを書いてみた
firewood
Emcjp item21
MITSUNARI Shigeo
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
Ad
Viewers also liked
(20)
PDF
Sapporocpp#2 exception-primer
Kohsuke Yuasa
PDF
C++ template-primer
Kohsuke Yuasa
PDF
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
Hiro H.
PDF
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
Hiro H.
PDF
最近のC++ @ Sapporo.cpp #5
Kohsuke Yuasa
PDF
Introduction to boost test
Kohsuke Yuasa
PDF
rsyncで差分バックアップしようぜ!
Hiro H.
PDF
オーディオ用レベルメータを作ってみよう
Kohsuke Yuasa
PPTX
C++用将棋ライブラリ"OpenShogiLib"の紹介
Hiro H.
PDF
Study3 boost
Kohsuke Yuasa
PDF
名古屋市営地下鉄最小距離完乗
Hiro H.
PDF
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Hiro H.
PDF
規格書で読むC++11のスレッド
Kohsuke Yuasa
PPTX
2011.6.4 TDD bootcamp 札幌2.0 自己紹介LT
Hiro H.
PDF
イマドキC++erのモテカワリソース管理術
Kohsuke Yuasa
PPTX
競技プログラミングのためのC++入門
natrium11321
PDF
C++ マルチスレッドプログラミング
Kohsuke Yuasa
PDF
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
PDF
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Hiro H.
PDF
MSYS2使いはじめました
Hiro H.
Sapporocpp#2 exception-primer
Kohsuke Yuasa
C++ template-primer
Kohsuke Yuasa
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
Hiro H.
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
Hiro H.
最近のC++ @ Sapporo.cpp #5
Kohsuke Yuasa
Introduction to boost test
Kohsuke Yuasa
rsyncで差分バックアップしようぜ!
Hiro H.
オーディオ用レベルメータを作ってみよう
Kohsuke Yuasa
C++用将棋ライブラリ"OpenShogiLib"の紹介
Hiro H.
Study3 boost
Kohsuke Yuasa
名古屋市営地下鉄最小距離完乗
Hiro H.
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Hiro H.
規格書で読むC++11のスレッド
Kohsuke Yuasa
2011.6.4 TDD bootcamp 札幌2.0 自己紹介LT
Hiro H.
イマドキC++erのモテカワリソース管理術
Kohsuke Yuasa
競技プログラミングのためのC++入門
natrium11321
C++ マルチスレッドプログラミング
Kohsuke Yuasa
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Hiro H.
MSYS2使いはじめました
Hiro H.
Ad
Similar to 2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
(20)
PDF
プログラミング講座 #6 競プロのテクニック(初級)
ZOIdayo
PDF
Boost Tour 1.50.0 All
Akira Takahashi
PDF
C++0x in programming competition
yak1ex
PDF
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
hixi365
PDF
中3女子でもわかる constexpr
Genya Murakami
PDF
boost tour 1.48.0 all
Akira Takahashi
PDF
Boost Tour 1_58_0 merge
Akira Takahashi
PDF
C++11概要 ライブラリ編
egtra
PDF
Boost tour 1_40_0
Akira Takahashi
PDF
初めてのSTL
HCPC: 北海道大学競技プログラミングサークル
PPT
C++0x in programming competition
yak1ex
PDF
【解説】JOI 2019/2020 一次予選 最速非公式解説【競技プログラミング】
Proktmr
PDF
Boost.Flyweight
gintenlabo
PDF
AtCoder Beginner Contest 011 解説
AtCoder Inc.
PDF
C++11のつかいかた
amusementcreators
KEY
Algebraic DP: 動的計画法を書きやすく
Hiromi Ishii
PDF
Rubysapporo Stringsearch
Akio Ishida
PDF
Yarudake
Ken Ogura
PDF
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
PPTX
Prosym2012
MITSUNARI Shigeo
プログラミング講座 #6 競プロのテクニック(初級)
ZOIdayo
Boost Tour 1.50.0 All
Akira Takahashi
C++0x in programming competition
yak1ex
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
hixi365
中3女子でもわかる constexpr
Genya Murakami
boost tour 1.48.0 all
Akira Takahashi
Boost Tour 1_58_0 merge
Akira Takahashi
C++11概要 ライブラリ編
egtra
Boost tour 1_40_0
Akira Takahashi
初めてのSTL
HCPC: 北海道大学競技プログラミングサークル
C++0x in programming competition
yak1ex
【解説】JOI 2019/2020 一次予選 最速非公式解説【競技プログラミング】
Proktmr
Boost.Flyweight
gintenlabo
AtCoder Beginner Contest 011 解説
AtCoder Inc.
C++11のつかいかた
amusementcreators
Algebraic DP: 動的計画法を書きやすく
Hiromi Ishii
Rubysapporo Stringsearch
Akio Ishida
Yarudake
Ken Ogura
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
Prosym2012
MITSUNARI Shigeo
More from Hiro H.
(18)
PDF
シンデレラガールズの「シンプルな」カードゲームを作りたい(アイマスハッカソン2024)
Hiro H.
PDF
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
Hiro H.
PDF
式を書くだけで最適化計算してほしい!~CVXPY編~
Hiro H.
PDF
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
Hiro H.
PDF
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
Hiro H.
PDF
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
Hiro H.
PDF
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
Hiro H.
PDF
PCSじゃないよ、PCAだよ
Hiro H.
PDF
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
Hiro H.
PDF
スマホ音楽ゲームの動画から譜面をデータ化したかった
Hiro H.
PDF
シンデレラガールズ声優の増え方まとめ
Hiro H.
PDF
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
Hiro H.
PDF
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
Hiro H.
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
PDF
最近デレステ創作譜面作ってるので技術的な見地から話します
Hiro H.
PDF
デレステの劇場で登場したアイドルの回数の統計取ってます
Hiro H.
PDF
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
Hiro H.
PDF
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
Hiro H.
シンデレラガールズの「シンプルな」カードゲームを作りたい(アイマスハッカソン2024)
Hiro H.
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
Hiro H.
式を書くだけで最適化計算してほしい!~CVXPY編~
Hiro H.
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
Hiro H.
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
Hiro H.
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
Hiro H.
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
Hiro H.
PCSじゃないよ、PCAだよ
Hiro H.
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
Hiro H.
スマホ音楽ゲームの動画から譜面をデータ化したかった
Hiro H.
シンデレラガールズ声優の増え方まとめ
Hiro H.
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
Hiro H.
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
Hiro H.
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
最近デレステ創作譜面作ってるので技術的な見地から話します
Hiro H.
デレステの劇場で登場したアイドルの回数の統計取ってます
Hiro H.
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
Hiro H.
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
Hiro H.
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
1.
2011 関数型都市忘年会
最近書いた 関数型言語と関連する? C++プログラムの紹介 H.Hiro (Maraigue) Web: http://hhiro.net/about/ Twitter: @h_hiro_
2.
自己紹介 H.Hiro
3.
自己紹介 札幌C++から 来ました
4.
自己紹介 H.Hiro • 大学院生(情報系) • アルゴリズムを考案し、それを実装して
効果を確かめたりしています(主にC++利用) • 最近、C++11の機能をいろいろと使いたいが ために、研究室のマシンをUbuntuを11に アップしました (gcc4.5標準搭載のため)
5.
自己紹介 H.Hiro • 好んで使うもの:C++、Ruby、JavaScript • 用途次第では使うもの:C#、Python、PHP •
一応書けるもの:Perl、Java、etc...
6.
自己紹介 H.Hiro • 好んで使うもの:C++、Ruby、JavaScript • 用途次第では使うもの:C#、Python、PHP •
一応書けるもの:Perl、Java、etc... • まだ使えてないもの:Scala、F#、etc...
7.
自己紹介 •
Twitter: @h_hiro_ • Facebook: 諸事情により非公開 • github: maraigue(まれーぐ) • ブログ: LivedoorブログのID "maraigue" • ニコ動: 探せば見つかります
8.
自己紹介(宣伝)
数学勉強会@札幌 • 大学数学の内容を取り扱ってます (現在は「群論」をやっています) • 毎週土曜日の10:00~12:00に 開催 ※今週については 日曜10:00~12:00 • 公式サイト:ぐぐって!
9.
自己紹介(宣伝)
交通勉強会(trafficonf) • 主に首都圏のメンバーがやっている 勉強会ですが、私も乗っかってます (10/8 札幌でust観覧会を実施) • 不定期開催(2~3ヶ月に1回) • 次の開催は1/7 • 次の札幌開催は3/17? • 公式サイト: 「交通勉強会準備会」でぐぐって!
10.
最近書いた 関数型言語と関連する? C++プログラムの紹介
H.Hiro (Maraigue) Web: http://hhiro.net/about/ Twitter: @h_hiro_
11.
おことわり 別に、直接 "関数型言語" 的な ことをするわけではないです
12.
おことわり 別に、直接 "関数型言語"
的な ことをするわけではないです ※C++で、「直接 "関数型言語" 的なことを する」例: Boost.勉強会 #6 札幌のuskz氏の発表 http://sites.google.com/site/boostjp/study_meeting/study6
13.
最近書いた 関数型言語と関連する? C++プログラムの紹介
H.Hiro (Maraigue) Web: http://hhiro.net/about/ Twitter: @h_hiro_
14.
例題 与えられた文字列に対し、 「どの単語が何番目にあるか」を示す 連想配列を生成したい。 例えば const std::string text
= "I love C++"; という文字列があったとき、連想配列dataを data["I"] == 0; data["love"] == 1; data["C++"] == 2; となるようにしたい。
15.
回答例(1) void position(const std::string
& str, std::map<std::string, size_t> & result){ size_t number = 0, begin_pos = 0, end_pos; result.clear(); for(;;){ end_pos = str.find(' ', begin_pos); if(end_pos == std::string::npos){ result[str.substr(begin_pos)] = number; break; }else{ result[str.substr(begin_pos, end_pos - begin_pos)] = number; } begin_pos = end_pos + 1; number++; } }
16.
回答例(1) void position(const std::string
& str, std::map<std::string, size_t> & result){ size_t number = 0, begin_pos = 0, end_pos; result.clear(); for(;;){ end_pos = str.find(' ', begin_pos); // スペースの位置を発見して if(end_pos == std::string::npos){ result[str.substr(begin_pos)] = number; break; }else{ result[str.substr(begin_pos, end_pos - begin_pos)] = number; } begin_pos = end_pos + 1; number++; } }
17.
回答例(1) void position(const std::string
& str, std::map<std::string, size_t> & result){ size_t number = 0, begin_pos = 0, end_pos; result.clear(); for(;;){ end_pos = str.find(' ', begin_pos); // スペースの位置を発見して if(end_pos == std::string::npos){ result[str.substr(begin_pos)] = number; break; }else{ result[str.substr(begin_pos, end_pos - begin_pos)] = number; } // ↑その部分までの部分文字列をキーとし連想配列に渡す begin_pos = end_pos + 1; number++; } }
18.
回答例(1) void position(const std::string
& str, std::map<std::string, size_t> & result){ size_t number = 0, begin_pos = 0, end_pos; result.clear(); for(;;){ end_pos = str.find(' ', begin_pos); // スペースの位置を発見して if(end_pos == std::string::npos){ result[str.substr(begin_pos)] = number; break; !!!??? }else{ result[str.substr(begin_pos, end_pos - begin_pos)] = number; } // ↑その部分までの部分文字列をキーとし連想配列に渡す begin_pos = end_pos + 1; number++; } }
19.
回答例(1) void position(const std::string
& str, std::map<std::string, size_t> & result){ size_t number = 0, begin_pos = 0, end_pos; result.clear(); 関数型な方にとっては 普通なことなのかも for(;;){ end_pos = str.find(' ', begin_pos); // スペースの位置を発見して if(end_pos == std::string::npos){ しれないけど result[str.substr(begin_pos)] = number; break; }else{ result[str.substr(begin_pos, end_pos - begin_pos)] = number; } // ↑その部分までの部分文字列をキーとし連想配列に渡す begin_pos = end_pos + 1; number++; } }
20.
回答例(1) void position(const std::string
& str, std::map<std::string, size_t> & result){ size_t number = 0, begin_pos = 0, end_pos; result.clear(); 文字列インスタンスを 別途生成するとか for(;;){ end_pos = str.find(' ', begin_pos); // スペースの位置を発見して if(end_pos == std::string::npos){ (C++的には)言語道断! result[str.substr(begin_pos)] = number; break; }else{ result[str.substr(begin_pos, end_pos - begin_pos)] = number; } // ↑その部分までの部分文字列をキーとし連想配列に渡す begin_pos = end_pos + 1; number++; } }
21.
ポイント 関数型言語では、メモリや速度よりも 処理の実現方法を気にする傾向がある。
22.
ポイント 関数型言語では、メモリや速度よりも 処理の実現方法を気にする傾向がある。 (個人的な印象)
23.
ポイント 関数型言語では、メモリや速度よりも 処理の実現方法を気にする傾向がある。 (個人的な印象) (例:変数への再代入を避ける)
24.
ポイント 関数型言語では、メモリや速度よりも 処理の実現方法を気にする傾向がある。 (個人的な印象) でも、メモリを重視しなければ C++の美学に反する。(個人的な印象)
25.
ポイント 関数型言語では、メモリや速度よりも 処理の実現方法を気にする傾向がある。 (個人的な印象) でも、メモリを重視しなければ C++の美学に反する。(個人的な印象) メモリを節約しつつ、関数型言語くらいの レベルで記法を簡略化したい
26.
回答例(2) Boost::splitを使う (参考URL http://www.gesource.jp/weblog/?p=4531) void position(const
std::string & str, std::map<std::string, size_t> & result){ std::list<std::string> splited; boost::split(splited, str, boost::is_space()); size_t number = 1; BOOST_FOREACH(std::string tmp, splited){ result[tmp] = number; } }
27.
回答例(2) Boost::splitを使う (参考URL http://www.gesource.jp/weblog/?p=4531) void position(const
std::string & str, std::map<std::string, size_t> & result){ std::list<std::string> splited; boost::split(splited, str, boost::is_space()); size_t number = 1; 記述は分かりやすいけど BOOST_FOREACH(std::string tmp, splited){ result[tmp] = number; でも文字列インスタンスを } } 別途生成してるだろ!
28.
つまりは • すでに存在する文字列(constであることを
仮定してよい)の部分文字列を 1つの文字列として扱いたい ("I love C++" から "love" や "C++" を得たい) • ただし、その「部分文字列」インスタンスを 作る際、文字列をコピーしてはならない • でも楽に書きたい (substrが使えれば楽に書けるんだけど…) …という状況が私の手元で発生したので ライブラリを書いたのです。
29.
そのライブラリの名は
30.
そのライブラリの名は http://www.flickr.com/photos/m-louis/3391434507/
Creative Commons 2.0 Attribution-ShareAlike
31.
そのライブラリの名は
fundoshi http://www.flickr.com/photos/m-louis/3391434507/ Creative Commons 2.0 Attribution-ShareAlike
32.
そのライブラリの名は
fundoshi (「他人のふんどしで相撲を取る」 より) http://www.flickr.com/photos/m-louis/3391434507/ Creative Commons 2.0 Attribution-ShareAlike
33.
fundoshiについて gist.githubにあります https://gist.github.com/1372506 (「fundoshi C++」でぐぐっても出ます) 以下のコマンドで入手可能です git clone
git://gist.github.com/1372506.git
34.
回答例(1) void position(const std::string
& str, std::map<std::string, size_t> & result){ size_t number = 0, begin_pos = 0, end_pos; result.clear(); for(;;){ end_pos = str.find(' ', begin_pos); if(end_pos == std::string::npos){ result[str.substr(begin_pos)] = number; break; }else{ result[str.substr(begin_pos, end_pos - begin_pos)] = number; } begin_pos = end_pos + 1; number++; } }
35.
回答例(3) void position(const std::string
& str, std::map<fundoshi::string, size_t> & result){ size_t number = 0, begin_pos = 0, end_pos; result.clear(); for(;;){ end_pos = str.find(' ', begin_pos); if(end_pos == std::string::npos){ result[fundoshi::string(&(str[begin_pos]))] = number; break; }else{ result[fundoshi::string(&(str[begin_pos]), end_pos - begin_pos)] = number; } begin_pos = end_pos + 1; number++; } }
36.
実行例 int main(void){
std::map<fundoshi::string, size_t> result; position("I love C++", result); std::cout << result["I"] << std::endl; std::cout << result["C++"] << std::endl; std::cout << result["love"] << std::endl; }
37.
実行例 int main(void){
std::map<fundoshi::string, size_t> result; position("I love C++", result); std::cout << result["I"] << std::endl; std::cout << result["C++"] << std::endl; std::cout << result["love"] << std::endl; } ↓ 0 2 きたこれ! 1
38.
簡単なリファレンス(1) • クラス名
– template <class CharType> fundoshi::basic_string<CharType>; – typedef basic_string<char> string; – typedef basic_string<wchar_t> wstring; ※std::stringとかに名前を合わせてます メソッド名も基本的には合わせてます
39.
簡単なリファレンス(2) • コンストラクタ –
basic_string(); // 空文字列 – basic_string(const CharType * newstr, size_t length); // 文字列の一部を切り出す場合 – basic_string(const CharType * newstr); // '¥0'終端の文字列を使う場合 – basic_string( const std::basic_string<CharType> & newstr); // std::basic_string (std::stringなどを含む) を使う場合
40.
簡単なリファレンス(3) • ポインタを貰う const
CharType * c_str(void) const; • 長さを取得 size_t length(void) const; • 文字を取り出す CharType operator [](size_t pos) const; • 文字列比較 bool operator ==(const basic_string<CharType> & other) const; bool operator < (const basic_string<CharType> & other) const; bool operator <=(const basic_string<CharType> & other) const; bool operator > (const basic_string<CharType> & other) const; bool operator >=(const basic_string<CharType> & other) const;
41.
おことわり
APIは (今のところ)これで 全部です!
42.
おわりに • 私はよくRubyも使ってるのだが
Rubyに慣れてしまうと C++って記法がエレガントじゃないよね • だから記法にこだわっている • boostとかその点頑張ってるっぽいので タイミングを見て勉強してみたいです
43.
おわりに
(再掲) 関数型言語 あまり関係なかった。 本当申し訳ない。
44.
おわりに (もし時間が余ったら) もう一つ「記法にこだわる」
ネタをします
45.
おわりに ありがとう ございました
Download