2012-11-19 62 views
2

我认为这是一个经典的问题,但我没有设法找到明确的答案(也许我的关键字不是好的)。数据结构绑定转换C++

比方说,我有以下形式的结构(这是我的编程实践中反复出现的情况):

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]?

更普遍的是,是否有任何可以防止这种情况的实用规则?

回答

1

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

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; });