0

std::lower_bound() が参照ではなく比較関数の値渡しを要求するのはなぜですか?

値渡しは、コピーが必要であることを意味し、速度が低下します。特に、誰かが「大きな」比較関数オブジェクトを渡した場合。

4

1 に答える 1

4

ほとんどではないにしても、多くの比較オブジェクトはステートレスであり、ほとんどサイズを取りません (ただし、サイズをゼロにすることはできません)。参照を渡すと、ステートレス述語を値で渡すよりも実際にはコストがかかる可能性があります (特に、コンパイラがコピーを完全に除外できる場合)。

于 2013-06-20T02:40:15.200 に答える