2012-11-19 3 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]. 두 번째, ..., pairAgeSize [n]. 초)?

더 일반적으로 이러한 상황을 방지 할 수있는 실용적인 실천 규칙이 있습니까?

답변

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