map の insert の話で気になってしまった。こうした場合、型パラメータ T_Any, T_Val を使わずに書けたりするのだろーか? http://ideone.com/c9ZRj
2010-06-28 02:02:06T_Any て。T_Key にしろよ。RT @PG_kura: map の insert の話で気になってしまった。こうした場合、型パラメータ T_Any, T_Val を使わずに書けたりするのだろーか? http://ideone.com/c9ZRj
2010-06-28 02:09:34TやUに変換できるものは関数呼び出しの際に変換されるでしょうからいらないんじゃないですかね。あとわざわざcount呼び出す必要無いような気が QT @PG_kura: map の insert の話で気になってしまった。こうした場合、型パラメータ T_Any, T_Val を使わ
2010-06-28 02:59:49map で一番手強いのは http://twitter.com/melponn/status/13516763556 だと思う。
2010-06-28 03:03:14auto const p = m.insert( make_pair( key, value ) ); if( p.second == false ){ p.first->second = value; }
2010-06-28 03:08:37@PepsiShiso どのみち map に入れる時点で value の型に依存したものに変換されるような・・・ってああ、そっかこれって呼び出すときにstringに変換されると効率が悪いからチェックしてinsertしてるんですね。納得です
2010-06-28 03:09:44if (it != m.end() && !m.key_comp()(k, it->first)) がパッと出てきたら頭おかしいです!
2010-06-28 03:12:00僕の頭脳ではこれが限界。 lower_bound とか頭おかしい。 http://ideone.com/olkjt
2010-06-28 03:18:55何でこれだとダメだったんだっけとEffective STLを開き直した自分とは大違いだ・・・ RT @SubaruG: 僕のコードだと、更新時も無駄に pair にコピーしちゃうから遅いってのは分かる。
2010-06-28 03:25:38value の型が POD のときは単に m[key] = value とするのが明快ですし、おそらく速いんですよね。すると POD と 非POD を分けるのにテンプレートメタプログラミングが出てきて今のところ私の手に負えなくなってしまうということに。
2010-06-28 03:42:24@PepsiShiso 速いかどうかは分かりませんけど、とりあえず POD と非 POD 分けるだけなら boost::enable_if<boost::is_pod<Value> >::type* = 0 とか引数に入れてやればいいような?
2010-06-28 03:53:04@melponn こんな感じでしょうか。(勝手に改変させて頂いてますが。) http://ideone.com/IJLso
2010-06-28 04:15:16