は、一般的な統合機能を比較対値でファンクタのオブジェクトを渡す:参照することにより(C++)
template <class F> double integrate(F integrand);
template <class F> double integrate(F& integrand);
または
template <class F> double integrate(const F& integrand);
でそれぞれの長所と短所は何ですか? STLは最初のアプローチ(値渡し)を使用します。最も普遍的な方法ですか?無料の関数名はL-することはできませんので、文脈を考慮
STLは、参照のコンテナなどを使用するときに多くの問題が発生するため、通常は最初の方法を使用します。 –
他の場所と同じです:「F」の内容によって、これらのバージョンは同じから非常に異なることがあります。 'F'がステートフルな場合、中間のバージョンだけが可能です。 –
基本的には、あなたが選択したフォームに基づいてユーザーに要件を設定しています。価値のあるものであれば、あなたは完全性を失うことなくコピーすることができるファンクタを与えることを要求しています。参考にしていれば、あなたはあなたがそれを置いているどんなユーザーにも適した生涯をあなたに与えることを要求しています。 – Mordachai