C++のコンテナクラスにポインタを突っ込んで嵌ったという情けない話
C++ で、型同士の比較のオーバーロードはできるのは分かったけれど(bool hoge::operator==(const hoge& a)) 、型のポインタ同士を比較するときはどうやってオーバーロードするんだろう・・・
2010-06-15 10:47:14リストコンテナにポインタを突っ込んだとき、検索させるときは==を使うわけで、でもその比較はポインタではなくその先を見るんだよね、多分。そのときに、呼ばれる演算子をオーバーロードするには、どう定義したらいいのか調べ中
2010-06-15 10:51:03必要ないのでは RT @hkato193: C++ で、型同士の比較のオーバーロードはできるのは分かったけれど(bool hoge::operator==(const hoge& a)) 、型のポインタ同士を比較するときはどうやってオーバーロードするんだろう・・・
2010-06-15 10:56:24@nyaocat @cpp_akira ありがとうございます!お恥ずかしいかぎりですが、仰るところのstd::listにポインタを突っ込んで、その中味を比較しようとしてました。こういうときにはどうしていらっしゃるのでしょう?もし良ければご意見を伺いたく。
2010-06-15 11:08:00@hkato193 んー、ポインタをラップした型を作って、ポインタの先を比較する演算子を定義するとかそんな感じかなぁ・・・
2010-06-15 11:12:08ポインタを突っ込んでその先の比較……って自分で書くしかないのかなぁ。なんかあった気がするからごにょごにょ調べてみよう
2010-06-15 11:13:45そうなのですね。…察するに、ポインタをコンテナに突っ込むこと自体があまりないですか? RT @cpp_akira: @hkato193 んー、ポインタをラップした型を作って、ポインタの先を比較する演算子を定義するとかそんな感じかなぁ・・・
2010-06-15 11:14:43@hkato193 今になって元の動機( http://twitter.com/hkato193/statuses/16192523521 )を見ましたが、std::find_ifでポインタの先を比較する関数オブジェクトを指定すればよさげです。
2010-06-15 11:19:25@hkato193 (スマート)ポインタをコンテナに入れることはもちろんありますが、ポインタの先の比較が必要になったことは今のところないですね。
2010-06-15 11:20:51対象2つともを引数で型指定できるようにするためでしょうか? RT @decimalbloat: よく分からんけど比較用のpredicateを使うとかじゃいけないんだろうか
2010-06-15 11:21:36ありがとうございます!まず、メモメモ。 RT @cpp_akira: @hkato193 今になって元の動機( http://bit.ly/coxzjM )を見ましたが、std::find_ifでポインタの先を比較する関数オブジェクトを指定すればよさげです。
2010-06-15 11:22:45@cpp_akira そうなのですね。必要にならない設計ができるよう、今後意識してみます。ありがとうございます!!
2010-06-15 11:24:09そういえばboost::lambdaの方がなんかすっきりしてて好きだからC++0xで標準入りしたラムダ式を全然知らない。
2010-06-15 11:25:52@hkato193 したい事とは違うかもしれませんが、ポインタをコンテナに突っ込むならば boost::ptr_container も便利ですよー http://www.kmonos.net/alang/boost/classes/pointer_container.html
2010-06-15 11:27:20