Submit Search
Upload
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
•
5 likes
•
4,058 views
Hiro H.
Follow
Ohotech 特盛 #10(2014.8.30)にて http://ohotech.connpass.com/event/7517/
Read less
Read more
Report
Share
Report
Share
1 of 101
Download now
Download to read offline
Recommended
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
C++におけるSTLの型の使い分けについて書いた記事(http://qiita.com/h_hiro_/items/a83a8fd2391d4a3f0e1c)をダイジェストで解説するものです。
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
amusementcreators
コルーチンの概要とゲーム開発への応用、C++用コルーチンライブラリHamigaki.Coroutineの使い方について説明します。
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
第14回 全ゲ連での講演資料です。 Twitter: @Reputeless
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
C++MIX #5 資料
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
Boost.勉強会4にて発表した内容です。http://atnd.org/events/11551
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
Boost.勉強会 #7 中3女子でもわかる constexpr
Recommended
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
C++におけるSTLの型の使い分けについて書いた記事(http://qiita.com/h_hiro_/items/a83a8fd2391d4a3f0e1c)をダイジェストで解説するものです。
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
amusementcreators
コルーチンの概要とゲーム開発への応用、C++用コルーチンライブラリHamigaki.Coroutineの使い方について説明します。
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
第14回 全ゲ連での講演資料です。 Twitter: @Reputeless
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
C++MIX #5 資料
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
Boost.勉強会4にて発表した内容です。http://atnd.org/events/11551
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
Boost.勉強会 #7 中3女子でもわかる constexpr
Map
Map
kikairoya
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Boost.勉強会 #8 中3女子が狂える本当に気持ちのいい constexpr
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
KMC 関東例会での講座の資料 (by @nojima)
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
現在のマルチスレッドプログラミングの抱える問題点と、代替案をわかりやすく解説いたします。最近登場したConcurrent Revisionsも解説します。
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
プログラムを高速化するためのテクニックをまとめました。
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
社内勉強会での発表資料です。C++の型システム的な話題を中心にC++20までお話しました。2018年時点なのでちょっと古いです。
Parser combinatorってなんなのさ
Parser combinatorってなんなのさ
cct-inc
コアコンセプトテクノロジー開発事解析業部の東さんの発表 関数型言語に搭載されているPaser Combinatorの説明と使い方 常駐先の実業務で、「今まさにやろうとしていたことが、これで解決できそうだ」という方も現れ、実務に直結するセッションに成りました。 専門的なお話になりましたが、活発な意見や議論が出来ました。
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
Boost.Asio を読みやすくする。
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
Keisuke Fukuda
Modern Effective C++ 勉強会 Item 22の発表資料です。
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
Ohotech 特盛 #10 ( http://ohotech.connpass.com/event/7517/ )で発表した資料です。
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
競技プログラミングに特有のコーディングテクニックを紹介
これから Haskell を書くにあたって
これから Haskell を書くにあたって
Tsuyoshi Matsudate
2016/2/14 開催の第一回 hs.hs 勉強会で用いたスライドです。 流れは以下の通りです。 1. はじめに 自己紹介や本発表の目的について 2. GHC 7.8 からの変更点 GHC 7.8 の前後で起きたライブラリの変化と、その変化への対処法について 3. Haskell が遅いと言われるワケとか 遅延評価や各種データ構造の内部表現に起因する諸問題と、その対処法について 4. 知らないと損する言語拡張たち 型の表現力を高めたり、計算速度を向上させる種々の言語拡張について 5. FFI の話 Haskell での FFI の扱いと、身近なライブラリから見る実装例について(※一部抜粋) 6. おまけ(その他便利グッズの話) あるとコーディングがある程度便利になる言語拡張について 一部訂正あり: http://qiita.com/func-hs/items/51b314a2323b83653bb9
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
yoshihikoozaki5
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Pythonによる(Rubyでも大体適用可能)黒魔術へ入門するための案内書
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
glibc mallocの解説 Video: https://youtu.be/0-vWT-t0UHg
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.
C++1zに導入される見込みの高くなったライブラリ string_view についてお話しします。
More Related Content
What's hot
Map
Map
kikairoya
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Boost.勉強会 #8 中3女子が狂える本当に気持ちのいい constexpr
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
KMC 関東例会での講座の資料 (by @nojima)
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
現在のマルチスレッドプログラミングの抱える問題点と、代替案をわかりやすく解説いたします。最近登場したConcurrent Revisionsも解説します。
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
プログラムを高速化するためのテクニックをまとめました。
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
社内勉強会での発表資料です。C++の型システム的な話題を中心にC++20までお話しました。2018年時点なのでちょっと古いです。
Parser combinatorってなんなのさ
Parser combinatorってなんなのさ
cct-inc
コアコンセプトテクノロジー開発事解析業部の東さんの発表 関数型言語に搭載されているPaser Combinatorの説明と使い方 常駐先の実業務で、「今まさにやろうとしていたことが、これで解決できそうだ」という方も現れ、実務に直結するセッションに成りました。 専門的なお話になりましたが、活発な意見や議論が出来ました。
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
Boost.Asio を読みやすくする。
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
Keisuke Fukuda
Modern Effective C++ 勉強会 Item 22の発表資料です。
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
Ohotech 特盛 #10 ( http://ohotech.connpass.com/event/7517/ )で発表した資料です。
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
競技プログラミングに特有のコーディングテクニックを紹介
これから Haskell を書くにあたって
これから Haskell を書くにあたって
Tsuyoshi Matsudate
2016/2/14 開催の第一回 hs.hs 勉強会で用いたスライドです。 流れは以下の通りです。 1. はじめに 自己紹介や本発表の目的について 2. GHC 7.8 からの変更点 GHC 7.8 の前後で起きたライブラリの変化と、その変化への対処法について 3. Haskell が遅いと言われるワケとか 遅延評価や各種データ構造の内部表現に起因する諸問題と、その対処法について 4. 知らないと損する言語拡張たち 型の表現力を高めたり、計算速度を向上させる種々の言語拡張について 5. FFI の話 Haskell での FFI の扱いと、身近なライブラリから見る実装例について(※一部抜粋) 6. おまけ(その他便利グッズの話) あるとコーディングがある程度便利になる言語拡張について 一部訂正あり: http://qiita.com/func-hs/items/51b314a2323b83653bb9
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
yoshihikoozaki5
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Pythonによる(Rubyでも大体適用可能)黒魔術へ入門するための案内書
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
glibc mallocの解説 Video: https://youtu.be/0-vWT-t0UHg
What's hot
(20)
Map
Map
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
メタプログラミングって何だろう
メタプログラミングって何だろう
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
C++ マルチスレッド 入門
C++ マルチスレッド 入門
できる!並列・並行プログラミング
できる!並列・並行プログラミング
プログラムを高速化する話
プログラムを高速化する話
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Parser combinatorってなんなのさ
Parser combinatorってなんなのさ
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
これから Haskell を書くにあたって
これから Haskell を書くにあたって
Template Meta Programming入門から応用まで
Template Meta Programming入門から応用まで
Pythonによる黒魔術入門
Pythonによる黒魔術入門
Glibc malloc internal
Glibc malloc internal
Viewers also liked
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.
C++1zに導入される見込みの高くなったライブラリ string_view についてお話しします。
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
Hiro H.
2016年3月19日 札幌C++勉強会 #11 で発表 http://sapporocpp.connpass.com/event/26937/
Rでの対称行列の固有値・固有ベクトルの最適な求め方
Rでの対称行列の固有値・固有ベクトルの最適な求め方
wada, kazumi
Math1 Vector
Math1 Vector
Keisuke Hata
今Cinderが熱い! #cinder
今Cinderが熱い! #cinder
KatsuyaENDOH
クリエィティブなC++ライブラリCinderの紹介
The Introduction to Vector Graphics
The Introduction to Vector Graphics
emaame
The introduction to Vector Graphics in Japanese.
OpenGL 3DCG
OpenGL 3DCG
Takenori Nakagawa
ゼミ発表資料03
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
Tomoaki Shimizu
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
cocos2d-x公開講座 in 鹿児島
cocos2d-x公開講座 in 鹿児島
Tomoaki Shimizu
cocos2d-x公開講座・ in 鹿児島
Macでcocos2d-x 2.1.3を使用した、Androidアプリの開発環境構築について
Macでcocos2d-x 2.1.3を使用した、Androidアプリの開発環境構築について
Tomoaki Shimizu
Macでcocos2d-x 2.1.3を使用した、Androidアプリの開発環境構築について
cocos2d-xのサーバ連携について
cocos2d-xのサーバ連携について
Tomoaki Shimizu
cocos2d-xのサーバ連携について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
Tomoaki Shimizu
macでcocos2d-x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島
Tomoaki Shimizu
2013/1/18 Cocos2d-x公開講座 in 鹿児島
Cocos2d xでの開発の準備
Cocos2d xでの開発の準備
Tomoaki Shimizu
Cocos2d xでの開発の準備 ~ハンズオン勉強会前にここまではやっておこう!~
cocos2d-xとCocosBuilderでゲームを作ってみよう
cocos2d-xとCocosBuilderでゲームを作ってみよう
Tomoaki Shimizu
cocos2d-xの開発に欠かせないCocosBuilderについて
cocos2d-xの開発に欠かせないCocosBuilderについて
Tomoaki Shimizu
cocos2d-xの開発に欠かせないCocosBuilderについて
Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介
Tomoaki Shimizu
Cocos2d xのススメ
Cocos2d xのススメ
Tomoaki Shimizu
Cocos2d-x実践講座 in 鹿児島
Cocos2d-x実践講座 in 鹿児島
Tomoaki Shimizu
2013/1/19 Cocos2d-x実践講座 in 鹿児島
Viewers also liked
(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 to C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Boost.Flyweight
Boost.Flyweight
gintenlabo
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
2012/12/01,久留米高専にて. 主に1~2年生向けのスライド.
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
わんくま同盟大阪勉強会#61 セッション資料
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.
Boost Fusion Library
Boost Fusion Library
Akira Takahashi
Boost.勉強会 #4 「Boost Fusion Library」の発表資料。
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
yushin_hirano
社内向けDataMining勉強会資料。原案。Rの導入について。 第一回の先陣を切る資料がこんなんでいいんかい。 講義のテキストの内容が薄かったのでだいぶ膨らませた。
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
Lisp meets Web : A tutorial of Portable AllegroServe and build a tiny BBS application.
Teclab3
Teclab3
Eikichi Yamaguchi
tech lab3
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
18 Mar. 2012 第3回Tokyo.Scipyにて発表したスライドです。 CythonだけではなくF2Pyにも触れていてかなりカオスな内容です。
C言語ポインタ講座 (Lecture of Pointer in C)
C言語ポインタ講座 (Lecture of Pointer in C)
kakira9618
サークルのC言語ポインタ講座の外部公開用資料です。 2017/11/12 改訂&演習問題追加 This is an document of pointer in C. English version is not available.
Cpu cache arch
Cpu cache arch
Shinichiro Niiyama
C++0x 言語の未来を語る
C++0x 言語の未来を語る
Akira Takahashi
わんくま同盟 東京勉強会 #22 2008/07/12
C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)
Akira Takahashi
19-E-5 「C++0x、Ruby、ECMAScript5 言語の国際標準化について」 のC++0x発表資料です。
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei
2016/12/1 bitFlyer TechNight C# Meetup での発表。 C# における文字列 (string) の高速な取り回しなどについて。 https://bitflyer.connpass.com/event/45476/
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
KMC春合宿2017
Gura プログラミング言語の紹介
Gura プログラミング言語の紹介
Yutaka Saito
Introduction to Gura programming language. English version is available here: http://www.slideshare.net/ypsitau/gura-introductione
Pythonと型チェッカー
Pythonと型チェッカー
Tetsuya Morimoto
PyCon mini Osaka 2018 https://osaka.pycon.jp/
C++0x in programming competition
C++0x in programming competition
yak1ex
P
Similar to 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入門
C言語ポインタ講座 (Lecture of Pointer in C)
C言語ポインタ講座 (Lecture of Pointer in C)
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
More from Hiro H.
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
Hiro H.
Pythonの表形式データ用ライブラリの「pandas」についてです。
式を書くだけで最適化計算してほしい!~CVXPY編~
式を書くだけで最適化計算してほしい!~CVXPY編~
Hiro H.
・「x2 + 4xの最小値を求めよ」みたいな、式と最適化条件だけ渡して計算してほしい ・このような問題は一般には難しい ・「最適化しやすいとわかるなら計算し、そうでないなら“私はその問題は対応できません”と返す」、というライブラリならある ・そのひとつがCVXPY
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
Hiro H.
オープンソースカンファレンス2023 オンライン名古屋 https://event.ospn.jp/osc2023-online-nagoya/ のライトニングトークで話した内容です。
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
Hiro H.
アイマスハッカソン2019 in 関西 https://imas.connpass.com/event/154962/ 発表内容
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
Hiro H.
IM@S Engineer Talks 2019 https://imas.connpass.com/event/134735/ 発表内容
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
Hiro H.
2019.5.25 わんくま同盟 名古屋勉強会 #48 ライトニングトーク発表内容
PCSじゃないよ、PCAだよ
PCSじゃないよ、PCAだよ
Hiro H.
2019.4.21のアイマスハッカソン2019 in 名古屋 https://imas.connpass.com/event/123253/ で開発していた内容です。主成分分析でシンデレラガールズのアイドルの体格の傾向を把握します。
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
Hiro H.
2018.12.23 アイマスハッカソン@東京 にて発表
スマホ音楽ゲームの動画から譜面をデータ化したかった
スマホ音楽ゲームの動画から譜面をデータ化したかった
Hiro H.
アイデア供養会 名古屋の陣(2018.9.3) https://geekbar.doorkeeper.jp/events/78549 にて発表
シンデレラガールズ声優の増え方まとめ
シンデレラガールズ声優の増え方まとめ
Hiro H.
2018.3.10 #imas_hack 大阪 LT https://imas.connpass.com/event/80082/
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
Hiro H.
札幌C++勉強会 #13 https://sapporocpp.connpass.com/event/75357/ での発表内容です。
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
Hiro H.
2017.12.9発表
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
東海道らぐ 2017.10.7 名古屋オフ https://tokaidolug.connpass.com/event/67522/ での発表内容より
最近デレステ創作譜面作ってるので技術的な見地から話します
最近デレステ創作譜面作ってるので技術的な見地から話します
Hiro H.
2017.9.2の「あいますえんじにあ Meetup in 京都」 https://imas.connpass.com/event/64177/ LTで話した内容です。
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
Hiro H.
2017.3.19 でじぽろ #13 & 札幌C++勉強会 https://digiporo.connpass.com/event/52265/ での発表内容。C++の標準ライブラリを簡単に眺めます。
デレステの劇場で登場したアイドルの回数の統計取ってます
デレステの劇場で登場したアイドルの回数の統計取ってます
Hiro H.
アイマスエンジニアMeetup in OSAKA https://imas.connpass.com/event/50353/ のライトニングトークで発表したものです。
名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗
Hiro H.
わんくま同盟 名古屋勉強会 #39 ライトニングトーク
MSYS2使いはじめました
MSYS2使いはじめました
Hiro H.
東海道らぐ 2016.7.9 での発表内容
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
Hiro H.
相似関係とカヴァリエリの原理だけで証明します。
rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!
Hiro H.
単にrsyncで差分バックアップするという話です。 2012年ごろに見つけた方法を引っ張り出して話します。 が、私がお世話になっている方法がググってもあまりメジャーじゃなかったので紹介させてください。 コマンド自体はここにあったものです http://www.maruko2.com/mw/rsync_%E3%81%A7%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AE%E5%90%8C%E6%9C%9F%EF%BC%88%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%EF%BC%89
More from 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にて複数のコマンドを並列実行(同時実行数の制限付き)
最近デレステ創作譜面作ってるので技術的な見地から話します
最近デレステ創作譜面作ってるので技術的な見地から話します
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
デレステの劇場で登場したアイドルの回数の統計取ってます
デレステの劇場で登場したアイドルの回数の統計取ってます
名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗
MSYS2使いはじめました
MSYS2使いはじめました
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!
Recently uploaded
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
オープンエンドな進化から着想を得て、個々の大規模言語モデル(LLM)が、グループとして学習を進めながら、ノームエージェントとして機能するという概念を探求しています。これは、単一のモデルでは難しい複雑な問題を解決することを目的としています。具体的な方法として、遺伝的アルゴリズムと知識蒸留を組み合わせた学習プロセスを提案しています。知識蒸留によって学習を進め、同時に遺伝的アルゴリズムでハイパーパラメータを最適化することで、より効率的な学習を目指します。ドメインタスクとして、指示からPythonコードを生成するコード生成タスクを選択しました。実験では、学習に3つの学習モデルと1つの教師モデルを使用しました。その結果、HumanEvalのpass@1で精度が1.2%向上し、学習が進むにつれて学習率が最適化された兆候が見られました。しかし、大幅な精度向上を達成し、さまざまなハイパーパラメータを最適化するには、まだ課題が残っています。
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
RIZAPテクノロジーズ株式会社の会社説明資料です。
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
我々はこれまで,新たなモノを産出する過程において「便利にすること」によって副次的に生じる課題を「便利の副作用」と定義し,その低減を目的としてアイディアの発想支援手法を提案してきた. これまでの研究では,便利前後の行為の増減に着目することにより便利の副作用への気づきの誘発が示唆されたものの,行為の増減の提示による便利の副作用への気づきへの影響は十分に検討できていなかった. そのため,本稿では行為の提示により便利の副作用に気づき,それを防いだアイディアの発想の支援が可能かの検証を目的として実験を行い,その有効性について検証する. 実験では,行為の増減の提示の有無によりアイディア発想にどのような影響を与えるか検証を行う.
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
浜松で開催されたJSAI2024(第38回)での発表.
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
CS集会でお話した、通信技術のひとつである「変調」について解説した資料です。 https://x.com/vrc_cpu_science/status/1724784316738355560
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
JSAI2024の発表スライドです.
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
Xinhong Ma, Yiming Wang, Hao Liu, Tianyu Guo, Yunhe Wang, "When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Segmentation" NeurIPS2023 https://proceedings.neurips.cc/paper_files/paper/2023/hash/157c30da6a988e1cbef2095f7b9521db-Abstract-Conference.html
Recently uploaded
(8)
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
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の コンテナ型を概観する 終わり
Download now