【发布时间】:2010-11-29 18:37:25
【问题描述】:
我正在编写一个简单的函数,它遍历容器中的数字并计算一些汇总值(本例中的熵)。
我想把它写得尽可能通用,这样它就可以在不同的容器(vector,set,...)上使用不同的值类型(double,float,...) ,所以我这样做:
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 代码本身一样简洁通用的代码...