Enviar búsqueda
Cargar
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
•
5 recomendaciones
•
4,042 vistas
Hiro H.
Seguir
Ohotech 特盛 #10(2014.8.30)にて http://ohotech.connpass.com/event/7517/
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 101
Descargar ahora
Descargar para leer sin conexión
Recomendados
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
x86x64 SSE4.2 POPCNT
x86x64 SSE4.2 POPCNT
takesako
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
Boostのあるプログラミング生活
Boostのあるプログラミング生活
Akira Takahashi
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
Keisuke Fukuda
Recomendados
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
x86x64 SSE4.2 POPCNT
x86x64 SSE4.2 POPCNT
takesako
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
Boostのあるプログラミング生活
Boostのあるプログラミング生活
Akira Takahashi
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
Keisuke Fukuda
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
llvm入門
llvm入門
MITSUNARI Shigeo
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
MITSUNARI Shigeo
SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更
T. Suwa
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
LLVM最適化のこつ
LLVM最適化のこつ
MITSUNARI Shigeo
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
京大 マイコンクラブ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
Hiro H.
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
これから Haskell を書くにあたって
これから Haskell を書くにあたって
Tsuyoshi Matsudate
C言語ポインタ講座 (Lecture of Pointer in C)
C言語ポインタ講座 (Lecture of Pointer in C)
kakira9618
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
junk_coken
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Takuya Ueda
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Hiro H.
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
Más contenido relacionado
La actualidad más candente
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
llvm入門
llvm入門
MITSUNARI Shigeo
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
MITSUNARI Shigeo
SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更
T. Suwa
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
LLVM最適化のこつ
LLVM最適化のこつ
MITSUNARI Shigeo
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
京大 マイコンクラブ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
Hiro H.
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
これから Haskell を書くにあたって
これから Haskell を書くにあたって
Tsuyoshi Matsudate
C言語ポインタ講座 (Lecture of Pointer in C)
C言語ポインタ講座 (Lecture of Pointer in C)
kakira9618
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
junk_coken
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Takuya Ueda
La actualidad más candente
(20)
Glibc malloc internal
Glibc malloc internal
プログラムを高速化する話
プログラムを高速化する話
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
llvm入門
llvm入門
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
SATySFi 最近の発展と目下実装中の変更
SATySFi 最近の発展と目下実装中の変更
templateとautoの型推論
templateとautoの型推論
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
LLVM最適化のこつ
LLVM最適化のこつ
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
これから Haskell を書くにあたって
これから Haskell を書くにあたって
C言語ポインタ講座 (Lecture of Pointer in C)
C言語ポインタ講座 (Lecture of Pointer in C)
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Destacado
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Hiro H.
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
Hiro H.
Rでの対称行列の固有値・固有ベクトルの最適な求め方
Rでの対称行列の固有値・固有ベクトルの最適な求め方
wada, kazumi
Math1 Vector
Math1 Vector
Keisuke Hata
今Cinderが熱い! #cinder
今Cinderが熱い! #cinder
KatsuyaENDOH
The Introduction to Vector Graphics
The Introduction to Vector Graphics
emaame
OpenGL 3DCG
OpenGL 3DCG
Takenori Nakagawa
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
Tomoaki Shimizu
cocos2d-x公開講座 in 鹿児島
cocos2d-x公開講座 in 鹿児島
Tomoaki Shimizu
Macでcocos2d-x 2.1.3を使用した、Androidアプリの開発環境構築について
Macでcocos2d-x 2.1.3を使用した、Androidアプリの開発環境構築について
Tomoaki Shimizu
cocos2d-xのサーバ連携について
cocos2d-xのサーバ連携について
Tomoaki Shimizu
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
Tomoaki Shimizu
Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島
Tomoaki Shimizu
Cocos2d xでの開発の準備
Cocos2d xでの開発の準備
Tomoaki Shimizu
cocos2d-xとCocosBuilderでゲームを作ってみよう
cocos2d-xとCocosBuilderでゲームを作ってみよう
Tomoaki Shimizu
cocos2d-xの開発に欠かせないCocosBuilderについて
cocos2d-xの開発に欠かせないCocosBuilderについて
Tomoaki Shimizu
Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介
Tomoaki Shimizu
Cocos2d xのススメ
Cocos2d xのススメ
Tomoaki Shimizu
Cocos2d-x実践講座 in 鹿児島
Cocos2d-x実践講座 in 鹿児島
Tomoaki Shimizu
Destacado
(20)
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
Rでの対称行列の固有値・固有ベクトルの最適な求め方
Rでの対称行列の固有値・固有ベクトルの最適な求め方
Math1 Vector
Math1 Vector
今Cinderが熱い! #cinder
今Cinderが熱い! #cinder
The Introduction to Vector Graphics
The Introduction to Vector Graphics
OpenGL 3DCG
OpenGL 3DCG
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
cocos2d-x公開講座 in 鹿児島
cocos2d-x公開講座 in 鹿児島
Macでcocos2d-x 2.1.3を使用した、Androidアプリの開発環境構築について
Macでcocos2d-x 2.1.3を使用した、Androidアプリの開発環境構築について
cocos2d-xのサーバ連携について
cocos2d-xのサーバ連携について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島
Cocos2d xでの開発の準備
Cocos2d xでの開発の準備
cocos2d-xとCocosBuilderでゲームを作ってみよう
cocos2d-xとCocosBuilderでゲームを作ってみよう
cocos2d-xの開発に欠かせないCocosBuilderについて
cocos2d-xの開発に欠かせないCocosBuilderについて
Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介
Cocos2d xのススメ
Cocos2d xのススメ
Cocos2d-x実践講座 in 鹿児島
Cocos2d-x実践講座 in 鹿児島
Similar a C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Boost.Flyweight
Boost.Flyweight
gintenlabo
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
Preferred Networks
What is template
What is template
Akira Takahashi
Boost tour 1_44_0
Boost tour 1_44_0
Akira Takahashi
Boost Fusion Library
Boost Fusion Library
Akira Takahashi
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
yushin_hirano
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
Teclab3
Teclab3
Eikichi Yamaguchi
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
Cpu cache arch
Cpu cache arch
Shinichiro Niiyama
C++0x 言語の未来を語る
C++0x 言語の未来を語る
Akira Takahashi
C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)
Akira Takahashi
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
Gura プログラミング言語の紹介
Gura プログラミング言語の紹介
Yutaka Saito
Pythonと型チェッカー
Pythonと型チェッカー
Tetsuya Morimoto
C++0x in programming competition
C++0x in programming competition
yak1ex
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
Tomonobu_Hirano
Similar a C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
(20)
Boost.Flyweight
Boost.Flyweight
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
What is template
What is template
Boost tour 1_44_0
Boost tour 1_44_0
Boost Fusion Library
Boost Fusion Library
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Teclab3
Teclab3
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Cpu cache arch
Cpu cache arch
C++0x 言語の未来を語る
C++0x 言語の未来を語る
C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Gura プログラミング言語の紹介
Gura プログラミング言語の紹介
Pythonと型チェッカー
Pythonと型チェッカー
C++0x in programming competition
C++0x in programming competition
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
Más de Hiro H.
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
Hiro H.
式を書くだけで最適化計算してほしい!~CVXPY編~
式を書くだけで最適化計算してほしい!~CVXPY編~
Hiro H.
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
Hiro H.
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
Hiro H.
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
Hiro H.
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
Hiro H.
PCSじゃないよ、PCAだよ
PCSじゃないよ、PCAだよ
Hiro H.
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
Hiro H.
スマホ音楽ゲームの動画から譜面をデータ化したかった
スマホ音楽ゲームの動画から譜面をデータ化したかった
Hiro H.
シンデレラガールズ声優の増え方まとめ
シンデレラガールズ声優の増え方まとめ
Hiro H.
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
Hiro H.
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
Hiro H.
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
最近デレステ創作譜面作ってるので技術的な見地から話します
最近デレステ創作譜面作ってるので技術的な見地から話します
Hiro H.
デレステの劇場で登場したアイドルの回数の統計取ってます
デレステの劇場で登場したアイドルの回数の統計取ってます
Hiro H.
名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗
Hiro H.
MSYS2使いはじめました
MSYS2使いはじめました
Hiro H.
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
Hiro H.
rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!
Hiro H.
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
Hiro H.
Más de Hiro H.
(20)
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
式を書くだけで最適化計算してほしい!~CVXPY編~
式を書くだけで最適化計算してほしい!~CVXPY編~
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
PCSじゃないよ、PCAだよ
PCSじゃないよ、PCAだよ
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
スマホ音楽ゲームの動画から譜面をデータ化したかった
スマホ音楽ゲームの動画から譜面をデータ化したかった
シンデレラガールズ声優の増え方まとめ
シンデレラガールズ声優の増え方まとめ
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
最近デレステ創作譜面作ってるので技術的な見地から話します
最近デレステ創作譜面作ってるので技術的な見地から話します
デレステの劇場で登場したアイドルの回数の統計取ってます
デレステの劇場で登場したアイドルの回数の統計取ってます
名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗
MSYS2使いはじめました
MSYS2使いはじめました
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
Último
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Último
(9)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
1.
Ohotech 特盛 #10(2014.8.30)
C++のSTLの コンテナ型を概観する H.Hiro @ Sapporo.cpp Twitter: @h_hiro_ http://hhiro.net/about/
2.
自己紹介
3.
H.Hiro ●情報系の研究員 やってます
(2014年3月まで大学院生でした) ●趣味でもプログラム書いてます ●C++とかRubyとか他にも何でも
4.
IT系勉強会で北見に来るのは 2年ぶりです
5.
最近の勉強会発表 "コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を 解いてもらった方法"
@ FuraIT #3 (2014.8.23) http://www.slideshare.net/maraigue/graph-andlgpk
6.
よろしく お願いします
7.
はじめに
8.
今回知って もらえればと 思っていること
9.
1. 汎用的なデータ構造は C++だと"STL"として
提供されるということ
10.
2. どんなデータ構造を どんな場合に使えば
よいかの感覚
11.
3. "STL怖い"なんて 言わなくてよいように
なること
12.
では始めます
13.
おしながき
14.
1)STLとは 2)「データ構造」を考える理由 3)STLのコンテナ型と
それぞれの特徴 4)STLを使うと便利なこと
15.
STLとは
16.
STLとは ●Standard Template
Libraryの略 ●汎用的、かつ型に依存しない データ構造や処理(アルゴリズム) を提供する
17.
STLとは ●Standard Template
Libraryの略 ●汎用的、かつ型に依存しない データ構造や処理(アルゴリズム) を提供する
18.
Template(テンプレート)とは ●コンパイル時に有効になる クラスや関数に対するパラメータ
●型によらない機能を提供するのが 代表的な用法 template <class TYPE> TYPE max(const TYPE & v1, const TYPE & v2){ return(v1 > v2 ? v1 : v2); } max(1.0, 3.0); // TYPEはfloatとみなされる max(1, 5); // TYPEはintとみなされる max<int>(1, 5); // 型を明示してもよい
19.
STLの例 #include <iostream>
#include <vector> #include <algorithm> int main(void){ // 「intのvector」「doubleのvector」を作る // (あとで説明しますが、可変長配列です) std::vector<int> hoge = {3, 1, 4}; std::vector<double> piyo = {5.6, 1.2, 3.4}; // int/doubleの型によらず、同じ記法でソート(並べ替え)できる std::sort(hoge.begin(), hoge.end()); std::sort(piyo.begin(), piyo.end()); }
20.
●汎用的に利用されるデータ構造や アルゴリズムを自前で作るのは ミス・バグの原因にもなる
●STLが提供する機能の特性を 理解したうえで、先人の力を借りよう ●複数人で開発するときとかは特に。 (標準ライブラリなので何かと便利!)
21.
「データ構造」を 考える理由
22.
そもそも データ構造って 何なのか
23.
たとえば
24.
RPGを例に考えてみると ●パーティーの編成 (例えば「4人まで」とする)
●現在プレイヤーが持っている アイテムの一覧 ●マップ上の地形
25.
パーティーの編成 (例えば「4人まで」とする) →配列があればよい
サイズも固定でよい 職業:勇者、HP:120、… 職業:魔法使い、HP:95、… 職業:格闘家、HP:135、… 職業:僧侶、HP:110、…
26.
現在プレイヤーが持っている アイテムの一覧 →「どのアイテムを何個持って
いるか」という表 では表をどう作る? 構造体の配列にする ほかの方法もある アイテム名個数 薬草10 魔法石2 お守り3 : :
27.
マップ上の地形 →表があればよい (マス目状の配置であれば)
→線の一覧を格納する (マップが自由に描ける場合) 3Dだともっと面倒
28.
いろんな データ構造を 考えないと
ならない
29.
しかも 面倒なことに
30.
適切なデータ構造を 選ばないと 処理が遅くなったり
メモリを過剰に 消費したりする
31.
データ構造 自体はSTLが 面倒見て
くれるけど
32.
どのデータ構造 で作るかは プログラマーが
判断する
33.
この先では STLの型について そういった話を
していきます
34.
STLの コンテナ型一覧 (Part
1)
35.
コンテナ型 =(複数の)要素を 保持する型
36.
コンテナ型(1): vector 可変長配列
(あとで要素数を変えられる) vector<int> hoge = {3, 1, 4}; hoge.push_back(7); hoge.pop_front(); 3 1 4 3 1 4 7 1 4 7
37.
std::vector<int> hoge; //
↑int型の要素を // 格納するvector std::vector<std::string> piyo; // ↑string型(文字列型)の要素を // 格納するvector
38.
補足 vector<int> hoge
= {3, 1, 4}; ↑こういう書き方は、 配列ではもともとできましたが、 vector(やその他のクラス)で使うには 比較的新しいコンパイラが必要です。 (現時点での最新のC++規格 「C++11」で新規に規格化)
39.
コードはこんな感じ #include <iostream>
#include <vector> // vectorを使うために int main(void){ std::vector<int> hoge(3); // 要素数3のvector // ここでは数値を使ってループしている // 「イテレータ」を使う方法もある(あとで説明します) for(size_t i = 0; i < hoge.size(); ++i){ hoge[i] = i * i; } // (以下略) }
40.
vectorの特性(1) ●k番目の要素を取得(ランダムアクセス) →即座に完了。
vectorはメモリ上に等間隔で要素を 並べて保持しているので(配列と同じ) メモリ上のその場所にアクセスするだけ。 3 1 4 7
41.
vectorの特性(2) ●要素を1つ挿入する →大きく時間がかかる場合がある。
→もともと配列にあった要素をずらさないと ならない。 3 1 4 2番目に「5」を追加 3 5 1 4
42.
vectorの特性(2) ●要素を1つ挿入する →大きく時間がかかる場合がある。
→もともと配列にあった要素をずらさないと ならない。 →場合によっては、要素のメモリ上の 置き場所をまるごとずらす必要がある。 3 1 4 1 5 9 2 ↑二つのvectorが隣接したメモリ領域に格納されている。 ここで、「3 1 4」のほうを長くしようとすると?
43.
vectorの特性(3) ●要素を1つ削除する →挿入と同じ理屈で、
大きく時間がかかる場合がある。 3 5 1 4 「5」を削除→「1」「4」はずらす 3 1 4
44.
vectorの特性(4) ●メモリの消費量 →少ない。
変数を格納する領域+ポインタ変数2つ (領域の起点&領域のサイズ) 3 1 4 7
45.
ここまでのまとめ: vectorの利点 ●ランダムアクセスは速い
●メモリもそこまで食わない vectorの欠点 ●挿入・削除は遅い (最悪でvectorのサイズに比例)
46.
vectorの欠点 ●挿入・削除は遅い (最悪でvectorのサイズに比例)
↑これに対処してみる。
47.
コンテナ型(2): list 双方向連結リスト
要素の値 3 次の要素 前の要素 要素の値 1 次の要素 前の要素 要素の値 4 次の要素 前の要素 C++11ではforward_list (一方向連結リスト)もある
48.
listの特性(1) ●要素を1つ挿入する・削除する →ポインタを付け替えるだけでよいので
高速(ただし、挿入/削除する要素の ありかが事前にわかっている場合) 3 1 4 5
49.
listの特性(1) ●要素を1つ挿入する・削除する →ポインタを付け替えるだけでよいので
高速(ただし、挿入/削除する要素の ありかが事前にわかっている場合) 3 1 4 5
50.
listの特性(2) ●k番目の要素を取得(ランダムアクセス) →k回ポインタを辿る必要がある。
vectorに比べると非常に遅い 要素の値 3 次の要素 前の要素 要素の値 1 次の要素 前の要素 要素の値 4 次の要素 前の要素
51.
listの特性(3) ●メモリの消費量 →vectorに比べると多い。
格納する1要素につき、ポインタ変数 2つぶんの領域が追加で必要になる。 (forward_listの場合は1つ) 要素の値 3 次の要素 前の要素 要素の値 1 次の要素 前の要素 要素の値 4 次の要素 前の要素
52.
ここまでをまとめると ●vector:「k番目の要素を取得」という操作 (ランダムアクセス)が多いときに有利
●list:要素の挿入・削除が多いときに有利
53.
さて
54.
もう一つ 別の需要を 考えてみます
55.
検索
56.
検索問題 std::vector<int> hoge
= {3, 1, 4}; hogeの中に「2」があるか調べるには?
57.
検索問題 std::vector<int> hoge
= {3, 1, 4}; hogeの中に「2」があるか調べるには? →先頭から順に見る。 hogeの要素数が増えると当然遅くなる。 →std::list<int>だったとしても同じ。
58.
vectorだろうが listだろうが 検索は
時間がかかる
59.
でも 安心してください
60.
検索時間の削減を 優先した コンテナ型もある
61.
コンテナ型(3): set ●集合(要素を重複なく格納)
●「ある要素が存在するか否か」を 比較的高速に判定可能 std::set<int> hoge = {3, 1, 4}; std::set<int>::iterator it = hoge.find(6);
62.
コンテナ型(3): set ●multiset(要素を重複ありで格納)
もある ●C++11では、unordered_set・ unordered_multiset (内部実装が異なる)もある set:二分木 unordered_set:ハッシュテーブル
63.
setの特性(1) ●ある要素が存在するか調べる →setなら
logn に比例する程度の時間。 (n: すでに入っている要素数) →unordered_setなら、nにほぼ依存しない 時間で済む上、setよりも省メモリ。 ただしC++11対応環境が必要。
64.
setの特性(2) ●検索が高速になるように、 要素は内部で勝手に並び替えられている。
●なので、順番を維持したいときは 別途対策を考える必要がある。 ●setは要素の大小順、unordered_setは ハッシュ関数(詳細略)の値の順で並ぶ
65.
ここまでをまとめると 型 計算時間
(n:格納された要素数) 任意の 順序での 要素格納 ランダム アクセス 要素の 挿入・削除 要素の検索 vector 速い O(1)時間 遅い O(n)時間 遅い O(n)時間 可能 list forward_list 遅い O(n)時間 速い O(1)時間 遅い O(n)時間 可能 set unordered_set など できない (そもそも、 自由に並べ られない) 速い O(1)~O(logn) 時間 速い O(1)~O(logn) 時間 不能
66.
ここまで説明したもの vector, list,
forward_list#, set, multiset, unordered_set#, unordered_multiset# #:C++11で新規導入
67.
まだいろいろ あるので 手短に説明します
68.
コンテナ型(4): deque ●固定サイズの配列を可変個繋いでいる
●先頭か末尾であれば挿入・削除が高速 (それ以外はvectorと同じで低速) ●listよりメモリを使わないので、挿入・削除が 先頭か末尾中心であるときに有効 ●ランダムアクセスも可能 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 3 8
69.
コンテナ型(5): priority_queue ●入れた要素を大きさの順にしか取り出せない
●その代わり、取り出しは高速で 要素の挿入も比較的高速
70.
コンテナ型(6): array 普通の固定長配列(a[10]など)に便利な
機能を追加したもの。C++11で新規導入 コンテナ型(7): bitset 固定長のビット列。いわゆる「フラグ」 可変長の場合はvector<bool>を使うなどの 対応が必要
71.
コンテナ型(8): stack 「スタック」。割愛します
コンテナ型(9): queue 「キュー」。割愛します
72.
ここまで説明したもの vector, list,
forward_list#, set, multiset, unordered_set#, unordered_multiset#, deque, priority_queue, array#, bitset, stack, queue #:C++11で新規導入
73.
現時点での まとめ
74.
ここまで出てきた コンテナ型の 使い分け
75.
状況おすすめ 要素数が少ない vector
ランダムアクセスする機会が多い 計算時間よりもメモリ消費を抑えたいvector/deque 要素の挿入・削除を する機会が多い 先頭・末尾が中心deque 途中にもlist/forward_list 要素の検索をする 機会が多い 重複した要素の 格納は不要 set/unordered_set 重複した要素の 格納も必要 multiset/ unordered_multiset ※priority_queue, array, bitset, stack, queueは割愛
76.
ここで 一旦休憩 質問ありましたらどうぞ
77.
STLの コンテナ型一覧 (Part
2)
78.
Part 2は そんなに長く
ないです
79.
Part 2で やること
80.
連想配列
81.
連想配列 ふつうの配列と違って 好きな型の値で要素を参照できる
Rubyだと「ハッシュ」とか、Pythonだと「辞書」とか呼ばれる std::map<std::string, int> attendee = {{"Kitami", 8}, {"Sapporo", 5}}; std::cout << attendee["Sapporo"] << std::endl; std::cout << attendee["Kitami"] << std::endl; ++attendee["Kitami"]; std::cout << attendee["Sapporo"] << std::endl; std::cout << attendee["Kitami"] << std::endl;
82.
std::map<int, double> hoge;
// ↑int型の値を指定して // double型の値を設定/取得する std::map<std::string, int> piyo; // ↑string型(文字列型)の値を // 指定して // int型の値を設定/取得する
83.
さっきまでとの違い 当然だが、型を2つ指定する必要 std::vector<int>
hoge; // ↑指定する型はintだけ std::map<std::string, int> piyo; // ↑指定する型はstringとint
84.
STLの連想配列型 ●map ●unordered_map
●multimap ●unordered_multimap
85.
使い分け ●"unordered"の有無 →実装の違い(setと同様)
C++11前提でよいならunordered優先で ●"multi"の有無 →重複を許すか否か(setと同様)
86.
ここまで説明したもの vector, list,
forward_list#, set, multiset, unordered_set#, unordered_multiset#, deque, priority_queue, array#, bitset, stack, queue, map, multimap, unordered_map#, unordered_multimap# #:C++11で新規導入
87.
STLの コンテナ型は これで全部
(おそらく)
88.
では、もっと 活用してみよう
89.
STLを使うと 便利なこと
90.
再掲 // 「intのvector」「doubleのvector」を作る
std::vector<int> hoge = {3, 1, 4}; std::vector<double> piyo = {5.6, 1.2, 3.4}; // intでもdoubleでも同じ記法でソート(並べ替え)できる std::sort(hoge.begin(), hoge.end()); std::sort(piyo.begin(), piyo.end()); 型が違っても同じコードが使える
91.
それだけじゃない // 「intのvector」「intのdeque」を作る
std::vector<int> hoge = {3, 1, 4}; std::deque<int> piyo = {3, 1, 4}; // vectorでもlistでも同じ記法でソート(並べ替え)できる std::sort(hoge.begin(), hoge.end()); std::sort(piyo.begin(), piyo.end()); コンテナ型の方が違っていてもよい!
92.
STLには、このような コンテナ型を問わない APIが大量に用意されている
↓ コードの使い回しが容易 型の切り替えが容易
93.
イテレータ ●「要素の列挙」を抽象化したもの ●例えば「次の要素を得る」ことは
vectorなら「ポインタをインクリメント」 listなら「別途格納された次のポインタへ」 ●このおかげで様々な汎用性が得られている 3 1 4 7
94.
イテレータ ●「要素の列挙」を抽象化したもの ●例えば「次の要素を得る」ことは
vectorなら「ポインタをインクリメント」 listなら「別途格納された次のポインタへ」 ●このおかげで様々な汎用性が得られている 要素の値 3 次の要素 前の要素 要素の値 1 次の要素 前の要素 要素の値 4 次の要素 前の要素
95.
イテレータ 要素を単純に列挙するコード std::vector<int>
hoge = {3, 1, 4}; for(std::vector<int>::iterator it = hoge.begin(); it != hoge.end(); ++it){ // イテレータはポインタ同様、*で値に変換できる std::cout << *it << std::endl; } ※補足:hoge.end()は「最終要素の次」、 すなわち「ダミーの無効な要素」を表す
96.
イテレータ 要素を単純に列挙するコード std::list<int>
hoge = {3, 1, 4}; for(std::list<int>::iterator it = hoge.begin(); it != hoge.end(); ++it){ // イテレータはポインタ同様、*で値に変換できる std::cout << *it << std::endl; } vectorでもlistでもコードはほぼ同じ!
97.
アルゴリズム ●#include <algorithm>すると
いろんなアルゴリズムが利用可能に ●検索、並び替え、コピーなど ●パラメータとしてイテレータを渡すことが多い std::vector<int> hoge = {3, 1, 4}; // 偶数である最初の要素を返す std::vector<int>::iterator search_result = std::find_if(hoge.begin(), hoge.end(), [](int x){ return x % 2 == 0; });
98.
おわりに
99.
STLの便利なところ ●基本的なデータ構造なら 自分でわざわざ作らなくてよい
●アルゴリズムも然り ●標準ライブラリなので環境依存も小さい ●新しめのコンパイラ(C++11対応)を 使うとさらに便利に
100.
STLの注意点 ●データ構造の選択はプログラマーの判断 ●今回割愛した話
●イテレータを1つ進めるのが速い型、遅い型 (※unorderedでないset、mapは遅い) ●イテレータを外部に保存してよい型、 保存に注意を要する型 (※注意を要する型 =vector、deque、unordered_*)
101.
Ohotech 特盛 #10(2014.8.30)
C++のSTLの コンテナ型を概観する 終わり
Descargar ahora