SlideShare a Scribd company logo
1 of 18
Download to read offline
Boost.Range
入門

H.22/10/02
Egtra
高専カンファ 2010秋 in 東京
まとめ
• std::sort(v.begin(), v.end());
   – これが……
         ↓
• boost::sort(v);
  – こう書けるようになります!というお話
自己紹介
• Egtra (20)
• 出身:    東京工業高等専門学校
         情報工学科
• Twitter: @egtra
std::sort
• ソートする関数std::sort
  – std::vector<int> v = {42, -78, 15};
  – std::sort(v.begin(), v.end());
  – // vの中は-78, 15, 42になる。


• でもなんで.begin()と.end()?
  – じゃまくさいだけでしょ
そこでBoost.Range
• #incldude <boost/range/algorithm.hpp>
• boost::sort(v);


• std::hoge(x.begin(), x.end(), …);
• →boost::hoge(x, …);
  – <algorithm>と<numeric>
    すべてあります
Range
• std::sortではイテレータを渡した
• boost::sortに渡すのは“Range”
  – STLコンテナだけではない
Rangeであるもの
• STLコンテナ
  – vector, deque, list, set, map, ……
• 配列
• iterator_range
• boost::array
• ……
Rangeであるもの (2)
• これもOK!
  – int a[] = {2, 3, 1};
  – boost::sort(a);
Iterator
• ある位置を指す




 begin      end
Range
• ある範囲




         Range
Iterator ↔ Range
• RangeからIteratorを取り出す
  – begin = boost::begin(r);
  – end = boost::end(r);


• IteratorからRangeを作る
   – r = boost::make_iterator_range(
           begin, end);
Boost.Rangeとは
• Range concept implementation
• Renge Adaptors
• Range Algorithm
• Provied Ranges
• Utilities
• <algorithm>と<numeric>全関数網羅
さっそく使ってみる
(追記:発表の際は黒板にいくつか例を書いていました)
おまけ
残り時間の許すところまで進みます。
Boost.Rangeに
 入門するまで
   あと一歩
Boost.Range入門
Boost.Range入門

More Related Content

Similar to Boost.Range入門

C++11概要 ライブラリ編
C++11概要 ライブラリ編C++11概要 ライブラリ編
C++11概要 ライブラリ編
egtra
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
yak1ex
 
for JSDeferred Code Reading
for JSDeferred Code Readingfor JSDeferred Code Reading
for JSDeferred Code Reading
Kenichirou Oyama
 
SystemC Tutorial
SystemC TutorialSystemC Tutorial
SystemC Tutorial
kocha2012
 

Similar to Boost.Range入門 (20)

C++11概要 ライブラリ編
C++11概要 ライブラリ編C++11概要 ライブラリ編
C++11概要 ライブラリ編
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
動的計画法の並列化
動的計画法の並列化動的計画法の並列化
動的計画法の並列化
 
Goコンパイラのきもち
GoコンパイラのきもちGoコンパイラのきもち
Goコンパイラのきもち
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
 
板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!
 
第四回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016第四回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 110110分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
Scala勉強会 2015 02_03
Scala勉強会 2015 02_03Scala勉強会 2015 02_03
Scala勉強会 2015 02_03
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
 
for JSDeferred Code Reading
for JSDeferred Code Readingfor JSDeferred Code Reading
for JSDeferred Code Reading
 
SystemC Tutorial
SystemC TutorialSystemC Tutorial
SystemC Tutorial
 
D3.js で LOD を Visualization
D3.js で LOD を VisualizationD3.js で LOD を Visualization
D3.js で LOD を Visualization
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回
 
Ssaw08 0916
Ssaw08 0916Ssaw08 0916
Ssaw08 0916
 
C++でHello worldを書いてみた
C++でHello worldを書いてみたC++でHello worldを書いてみた
C++でHello worldを書いてみた
 

More from egtra (8)

Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSALVisual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
 
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
 
Casablanca
CasablancaCasablanca
Casablanca
 
Firefox拡張機能を始める
Firefox拡張機能を始めるFirefox拡張機能を始める
Firefox拡張機能を始める
 
ATLに見る魔術
ATLに見る魔術ATLに見る魔術
ATLに見る魔術
 
再変換 (K2Editor)
再変換 (K2Editor)再変換 (K2Editor)
再変換 (K2Editor)
 
char32_tとXpressiveと
char32_tとXpressiveとchar32_tとXpressiveと
char32_tとXpressiveと
 
Boost.Graph入門
Boost.Graph入門Boost.Graph入門
Boost.Graph入門
 

Boost.Range入門