2

我认为这是一个经典问题,但我没有找到明确的答案(也许我的关键字不是很好的)。

假设我有一个形式的结构(这是我编程实践中经常出现的情况):

std::vector< pair<unsigned int, double> > pairAgeSize;

我有一个形式的功能:

double getMean(const std::vector<double> & sample);

在元素 [pairAgeSize[0].first,...,pairAgeSize[n].first] 上调用 getMean 的“最佳”方法是什么?甚至在 [pairAgeSize[0].second,...,pairAgeSize[n].second] 上?

更一般地说,是否有任何实用的实践规则可以防止这种情况发生?

4

2 回答 2

1

getMean应该将迭代器作为完全通用的输入,并且您应该编写一个将返回的自定义迭代器pair.first

于 2012-11-19T18:53:50.973 回答
1

如果您绝对无法摆脱getMean(也许这是您无法更改的库方法):

std::vector<double> justSizes;
std::transform(pairAgeSize.begin(), pairAgeSize.end(), std::back_inserter(justSizes), [](const std::pair<unsigned int, double> &ageSize) { return ageSize.second; });
于 2012-11-19T19:06:15.363 回答