iterator雑談

並行データ構造とiteratorについて勉強になりました。
9
Norihisa Fujita, ぽん @fjnli

@kumagi そのあたりは難しいというか、よくわかんないですね…(特に並列データ構造)

2011-03-09 02:40:40
くっくっkura 🇯🇵🦀 @PG_kura

実設計がアーキテクチャに引っ張られることはあっても、抽象的であるはずの概念がアーキテクチャに左右されるのはおかしい。

2011-03-09 02:37:59
Norihisa Fujita, ぽん @fjnli

@PG_kura そのアーキテクチャの上で、ある概念を実装する場合、とてもコストが高くなる場合はありえます。そこまでして無理に実装しても誰も幸せにはならないと思うのです。

2011-03-09 02:39:22
くっくっkura 🇯🇵🦀 @PG_kura

@fjnli 全くその通りだと思います。流れ把握してませんが、並列処理のためのいろいろな概念が形成されていくなかで、それらへの理解や実装が C++ のイテレータの仕様に引っ張られるべきではない、という意図ですた。

2011-03-09 02:42:54
くまぎ @kumagi

「iterator雑談」をトゥギャりました。 http://togetter.com/li/109612

2011-03-09 02:54:19
pepshiso @pepshiso

基本的に、for_eachに渡す関数オブジェクトが何とかするしかないのか

2011-03-09 03:03:37
kumagi @kumagi_bot

そうだよovenの凄いところはパイプでつないだ複数処理を合成関数にしちゃえるところだった。舐める処理が一回でいいんだ。元々のデータ構造がbegin(),end()をサポートしてる前提だとしたらぬるぽというだけで。

2011-03-09 02:58:44
二階堂ちむら @thimura

@kumagi_bot 現状では boost::begin,end に依存してますが、そこを書き換えれば使えそうですね

2011-03-09 03:03:34
Norihisa Fujita, ぽん @fjnli

@thimura @kumagi_bot begin,endの代替手段は、非侵入的に提供可能です。

2011-03-09 03:04:52
二階堂ちむら @thimura

[定期] C++ に関数オブジェクトの合成演算子がほしい

2011-03-09 03:07:51
Norihisa Fujita, ぽん @fjnli

@kumagi_bot んあ、Random Access Rangeを要求するアダプタはないかも…。Random Access Rangeの方が効率的になるアダプタは沢山ありますが

2011-03-09 03:07:50
Norihisa Fujita, ぽん @fjnli

OvenにRandom Access Rangeを要求するアダプタがあった気がしたけど、ドキュメント見る限りだとないなー…

2011-03-09 03:08:57
kumagi @kumagi_bot

@fjnli それってどういう事でしょう?データ構造の設計者が何も提供しなくても良い、という訳には行かないと思うんですが(現状の僕のgithubのhashmapのようなのが何も提供していない例)forward iteratorぐらいは提供できそうだなーといった所です。

2011-03-09 03:12:56
Norihisa Fujita, ぽん @fjnli

@kumagi_bot たとえば、std::vectorの場合、vector::iteratorの型を使い、v.begin(), v.end()でイテレータを得るわけですが、この方法は型の定義に侵入しています。型の定義をいじらない限り、レンジとして使うことはできません。(続

2011-03-09 03:14:53
Norihisa Fujita, ぽん @fjnli

@kumagi_bot でも、型をいじれないが、レンジとしてのセマンティクスを提供(できる|したい)場合はあります。その時に、型の外部からイテレータとbegin, endを得る手段を提供できます(非侵入的)

2011-03-09 03:15:58
kumagi @kumagi_bot

@fjnli なんと。型の外部からイテレータを得る…ですと…。

2011-03-09 03:19:30
二階堂ちむら @thimura

begin end にすら依存したくないという話のような気もするけど

2011-03-09 03:20:15
くまぎ @kumagi

@thimura 僕の場合はそれです。concurrentHashmapの提供するべきインタフェースとは何ぞや、というところが強いです。

2011-03-09 03:25:07
Norihisa Fujita, ぽん @fjnli

for_each(container) ->* [&] (...) {}

2011-03-09 03:40:03
くまぎ @kumagi

@fjnli それを実現させるためには僕はhashmapに何を取り付ければいいのでしょうか…?

2011-03-09 03:41:07
Norihisa Fujita, ぽん @fjnli

@kumagi 元ネタは、でちまる先生のこれ(http://d.hatena.ne.jp/DigitalGhost/20100921/1285095799)です。 ->* が選択されているのは、優先度が最も高い二項演算子だからです。

2011-03-09 03:44:21