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 に答える