私はコンテナ内の数値を繰り返し処理し、いくつかの集計値(この場合はエントロピー)を計算する簡単な関数を書いています。異なる値の型(double
、float
、...)を超えるベストプラクティス:このコードを改善してコンテナ値を合計する方法
私はそれが別のコンテナで動作するように、できるだけ一般的なようにそれを書きたい(vector
、set
、...)ので、私はこれをやっています:
template<class Iterator>
typename Iterator::value_type Entropy(Iterator begin, Iterator end) {
typedef typename Iterator::value_type Value;
Value result = Value(); // assignment needed?
for (Iterator it = begin; it != end; ++it) {
result -= *it * log(*it);
}
return result;
}
私は、このコードがすべてのベストプラクティスによってどのように見えるかに興味があります。言い換えれば、この小さな関数のSTL実装はまさにどのように見えますか?
「すべてのベスト・プラクティス」のセットがとてもコードが書き込まれていない飽きないでしょう矛盾しています。あなたはどういう意味ですか? –
私は、STLの実装者がこれをどのように書いているのか不思議です。私はSTLコードそのものと同じくらい簡潔で包括的なコードを書く方法を学びたいと思っています... – Frank