オーバーテクノロジー:mapのキーをweak_ptrに - Togetter
Twitterのつぶやきマッシュアップメディア!
@togetter_jpをフォロー
マイページ
メニュー
設定
ログイン
トップ
ニュース
社会
地域
芸能・スポーツ
IT・Web
科学・教養
カルチャー
趣味
生活
仕事
ネタ・お笑い
ログ・日記
震災
311
物資
iwj
復興
岩上安身
三国志
大喜利
速報
国内
アジア
アメリカ
ヨーロッパ
その他
政治
経済
国際
法律
環境
コラム
東京
東京近郊
北海道
東北
関東
北陸・信越
東海
近畿
中国・四国
九州・沖縄
海外
芸能
テレビ
ラジオ
野球
サッカー
ゴルフ
格闘技
競馬
モータースポーツ
その他
Android
Apple
インターネット
パソコン
モバイル
ガジェット
サイト制作
プログラミング
その他
科学
テクノロジー
エネルギー
数学
物理
宇宙
自然
人文
建築
心理
その他
アニメ
ゲーム
マンガ
アイドル
映画
音楽
書籍
演劇
ファッション
社会学
カメラ
車・バイク
電車
旅行
釣り
歴史
アート
デザイン
動物
その他
ハウツー
レシピ
グルメ
恋愛
マネー
節約
健康・医療
教育
ペット
起業・ベンチャー
経営
マーケティング
会計・人事
法務
就職・転職
語学・資格
ネタ
お笑い
大喜利
画像・動画
やってみた
その他
ログ
日記
思い出
雑談
メモ
飲み会
議事録
イベント
セミナー
復興
原発
支援
政府
自治体
トップ
>
トップ
>
311
> オーバーテクノロジー:mapのキーをweak_..
2010/04/23 23:53:25
c++
boost
+
オーバーテクノロジー:mapのキーをweak_ptrに
まとめました。
by
zakkas783
7 fav
933 view
Fav
7
お気に入りに登録ならここをクリック!
まとめ
メニューを開く
一括削除
@Cryolite
そんなことよりしーらいおらいと先生はオブジェクト死んだら勝手にエントリ捨ててくれる void* でない WeakHashMap 的な unordered_map<weak_prt<K>, E,... > の実装について何かご存知ですか!!!
返信する
RTする
ふぁぼる
niha28
2010/04/23 23:28:00
deleter が void* しか扱えないせいでカウンタオブジェクトの特定が…raw pointer -> weak_ptr な map 内部で保持とかしたくないんだお!!!
返信する
RTする
ふぁぼる
niha28
2010/04/23 23:29:57
@niha28
shared_ptr の deleter に unordered_map<...>::erase を仕掛ければ良いんではないでしょうか的な感じですか?
返信する
RTする
ふぁぼる
Cryolite
2010/04/23 23:30:57
@Cryolite
仕掛けたいんですが deleter は生のポインタさんしかわからないのでどうすればいいんだろうっていう…
返信する
RTする
ふぁぼる
niha28
2010/04/23 23:34:11
つまりデリータが分かるのは引数の生のポインタさんだけなのに erase するには weak_ptr が必要で、キーなめて .lock().get() == rawptr で探そうにももう捨てられてるから .lock().get() == nullptr でおいィ?ってなるという!
返信する
RTする
ふぁぼる
niha28
2010/04/23 23:40:18
@niha28
ああ,でも deleter にメンバ変数持たせられるのでやり方は色々ありますよね.
返信する
RTする
ふぁぼる
Cryolite
2010/04/23 23:40:56
っていうか私は前どうやったっけ?
返信する
RTする
ふぁぼる
Cryolite
2010/04/23 23:41:10
boost なんちゃらのスライドで Cryolite さんはこれを「map のキーを void* にする」ことで回避していたけれど、それは悲しみが鬼なる解決なので、是非プロの C++ ぷろぎらまーによりよりよいよりよりよいよい方法を教えてもらいたいたいたいたいなーって思いました。
返信する
RTする
ふぁぼる
niha28
2010/04/23 23:41:40
weak_ptr は expire した後でもポインタ (所有権) 比較をする意味があるからどうにかしましょう,どうにかできます,と自己解決したはずだが結論どこいった???
返信する
RTする
ふぁぼる
Cryolite
2010/04/23 23:43:30
@Cryolite
はい、例えば rawpointer -> weak_ptr な map を持つっていうのがあるんですが、これだと「カウンタオブジェクトが長生きするのを回避する」ために「余計にメモリをがっつく」というはてな?なことになって矢張り悲しみが鬼なるしどうすればいんだー
返信する
RTする
ふぁぼる
niha28
2010/04/23 23:43:41
何となく boost のコード読んだところ、weak_ptr の保持している生のポインタはポインタの指し示すオブジェクトが破棄されても値残ってそうなのでこいつを何とかできればいいんじゃないか…ホントカナー
返信する
RTする
ふぁぼる
niha28
2010/04/23 23:51:06
@niha28
weak_ptr は expire してもポインタ値 (に相当するもの) は保持している (expire したあとに weak_ptr 同士を比較する操作には意義のある use case がある) ので,まあ,あれがこれがふにゃふにゃ
返信する
RTする
ふぁぼる
Cryolite
2010/04/23 23:53:54
@niha28
deleter に weak_ptr を持たせるのが1つの解決方法ですけれど,これをやるにはやや tricky なことをしないといけないです.
返信する
RTする
ふぁぼる
Cryolite
2010/04/23 23:55:00
@Cryolite
weak_ptr の保持してるポインタは多分そういうことのためにあるんだとは思うんですが、肝心の比較をしてくれる人が何処にも見当たらないのはどういうことなんでしょうか…これ private なのに…
返信する
RTする
ふぁぼる
niha28
2010/04/23 23:56:47
@Cryolite
急ぎじゃないので別にいつでもいいのですが機会があったら是非詳しく教えてください!
返信する
RTする
ふぁぼる
niha28
2010/04/23 23:58:01
@niha28
!(p < q) && !(q < p) が "p == q" に相当すると思ってください. (weak_ptr には operator== はない)
返信する
RTする
ふぁぼる
Cryolite
2010/04/23 23:58:24
@Cryolite
なるほどですね…なるほどとかいいましたが weak_count の operator< を知らないので適当ですがそれでいけるんですね。
返信する
RTする
ふぁぼる
niha28
2010/04/24 00:03:12
勉強になったけどまあ普通は unordered_map<void*, E> を持った WeakHashMap を自分で定義しちゃうなあと思うのであった。唐突なわけわからん質問にわざわざご丁寧にありがとうございました!
返信する
RTする
ふぁぼる
niha28
2010/04/24 00:05:21
weak_ptr の oerator< は(weak)カウンタオブジェクトのポインタ値の比較になるのか。これで比較問題は解決だけれど、結局 map 持ってないといけないことには変わらないので結局詰んでるなあ…
返信する
RTする
ふぁぼる
niha28
2010/04/24 00:12:01
結局結局結局なんだよ!!!とかいってる間に明日のためのユーティリティーも大体できた。
返信する
RTする
ふぁぼる
niha28
2010/04/24 00:13:57
weak_ptr 用に boost::hash が特殊化されていない (できない) のはどうするべきなんだこれ?
返信する
RTする
ふぁぼる
Cryolite
2010/04/24 00:16:02
@Cryolite
どうすべきなんでしょうね。0x を待つとか…
返信する
RTする
ふぁぼる
niha28
2010/04/24 00:22:46
unordered_map の key_type を (void * ではなくて) weak_ptr にしたいという要求は理不尽じゃないはずなのでどうにかできないと俺がヤダヤダ!
返信する
RTする
ふぁぼる
Cryolite
2010/04/24 00:23:45
@niha28
パッと見た感じでは 0x でも解決していません.
返信する
RTする
ふぁぼる
Cryolite
2010/04/24 00:24:18
expired な生ポインタ値を絶対に触らない・触らせないという shared_ptr/weak_ptr のポリシも理解はするけどこれどうすんのかにゃー.
返信する
RTする
ふぁぼる
Cryolite
2010/04/24 00:25:28
Content from Twitter
残りを読む(10)
ブログへ
iframe版
拡張版
張付けプレビュー
Fav
7
あわせて読みたい
オーバーテクノロジー:How to know which functhion is actually called among Overloaded Fu..
GM-10を利用した位置情報付きロギングシステム開発
appengine ja night #19 #ajn19
std::map
Mentionmapについて考える
powered by Preferred Infrastructure
コメント
コメントを入力してください。
Twitterにも投稿する
みんなのおすすめ商品
商品を編集
おすすめ商品を登録する
設定を変更する
まとめを作成する
プロフィール
フォローする
ランナーで似非茶人で化学者。C++に門前払いを食らう程度の能力。でも好き。
zakkas783
link
twitter
rss
フォローされている
6
アップデート
まとめ
132
30
プログラマが体験すべき50の危険なこと
4
C++闇の軍団 Origin
18
MessagePack
お気に入り
34
コメント
9
新着のまとめ
みんなのかんがえたさいきょうの都道府県EVOL..
new
レイヤーさんかな?って思う場合の特徴
new
混沌超人エルリックマン
new
美学校特別講座「中ザワヒデキ文献研究番外篇」第..
new
テント村運動の意義と結果
new
もっと見る
@togetter_jp
最近追加された商品
あなたにもできる!本当に困った人のための生活保護申請マニュアル (DO BOOKS)
わが道 [DVD]
巨人の星 コレクターズボックス 青雲編 Vol.1 [DVD]
四間飛車を指しこなす本〈1〉 (最強将棋塾)
巨人の星コンプリートBOX Vol.2 [DVD]
オススメ
マイスター
トゥギャ通
「放射能汚染地域に住む人の血って、ほしいですか..
『私がグーグルマップとフォトショップを使って「..
立憲主義を知らない自民党「憲法起草」委事務局長..
「放射能汚染地域に住む人の血って、ほしいですか..
埼玉南部の奴らがみた変な虹の写真まとめ
up
(仮)女子あるあるネタ
up
もっと見る
河本準一、妻の母も生活保護を受給!
new
恥と気高さ
new
クローズアップ現代「フィルム映画の灯を守りたい..
new
茂木健一郎(@kenichiromogi)さん..
new
袁紹の用兵の才能と分かり易い『官渡の戦い』
new
タイバニ当落メールが遅い理由を考えてみた まとめ
new
もっと見る
第80回「日食写真と昭和格差」
号外「みんなの金環日食まとめ―画像から教養ま..
第79回「虚構新聞とJリーグ」
第78回「コンプガチャとIT系かあちゃん」
第77回「びろーんと自宅警備隊」
第76回「Appleとパンツクッキー」
もっと見る
コメント