- C++相談室 part113
633 :デフォルトの名無しさん[]:2014/07/28(月) 23:08:59.96 ID:e7leb7fS - 反変の引数を簡単に取る方法無いの?
こんなん毎度毎度作るのめんどいわぁ。 template<class interface, class delegate> class Adapter: public virtual interface { delegate *target; public: Adapter( delegate *target ): target( target ){} virtual Widget *CreateBy( typename interface::Factory &factory ) { return delegate->CreateBy( factory ); } }; template<class factory> struct Model { typedef factory Factory; virtual Widget *CreateBy( Factory &) = 0; }; struct FactoryA{ 処理 }; struct FactoryB{ 処理 }; struct FactoryC: FactoryA, FactoryB { 省略 }; Model<FactoryA> *model; std::vector< Model< FactoryC > > collection; collection.push_back( new Adapter< Model< FactoryC >, Model<FactoryA> >( model ) )
|
- C++相談室 part113
634 :デフォルトの名無しさん[]:2014/07/28(月) 23:12:37.54 ID:e7leb7fS - >>633
?処理 ○省略
|
- Androidプログラミング質問スレ revision44
60 :デフォルトの名無しさん[]:2014/07/28(月) 23:46:29.81 ID:e7leb7fS - >>47
単なる整数型つかった演算じゃ殆ど差は出ないだろうよ。 言語の特性を意識したCodeで試さなきゃ差は分かりづらい。 C: ・数学関数は特殊な最適化をされる事が多い。 例えばabsや三角関数は関数ではなく直接CPUが もつ機械語命令に置き換えられる。 ・Heapより自動変数を多用する。 記憶領域の確保と開放が激しい場合は Heap中心の言語より速くなる。 ・検索結果をPointerで返す関数が多い。 検索結果を文字列で返す言語と比べると大きな差がでる。 C++: ・処理系によってはstd::valarrayやstd::complexが simd命令に置き換えられる。 Java: Smalltalkなどと同じく実行時にInline展開が起きるため、 反復処理中ずっと変わらない分岐(多態も含む)や式に強い。
|
- C++相談室 part113
636 :デフォルトの名無しさん[]:2014/07/28(月) 23:47:25.61 ID:e7leb7fS - >>635
ならマトモなコードを晒せ
|