Хорошо, моя интерпретация вашего вопроса такова, что у вас есть вектор, содержащий CGPoint
объекты, и вы хотите извлечь только координату y
из всех точек. В этом случае вы хотите что-то вроде (используя лямбды C ++ 11):
std::vector<CGFloat> ycoord;
std::transform( dp->begin(), dp->end(), std::back_inserter( ycoord ),
[]( CGPoint const & p ){ return p.y; } );
Если компилятор не поддерживает лямбда-выражения, вы можете написать простую функцию для выполнения извлечения:
CGFloat extractY( CGPoint const & p ) {
return p.y;
}
std::transform( dp->begin(), dp->end(), std::back_inserter( ycoord ),
&extractY );
Или функтор:
struct extractYfunctor {
CGFloat operator()( CGPoint const & p ) const {
return p.y;
}
};
std::transform( dp->begin(), dp->end(), std::back_inserter( ycoord ),
extractYfuctor() );
Если вы можете использовать библиотеки повышения:
std::transform( dp->begin(), dp->end(), std::back_inserter( ycoord ),
boost::bind( &CGPoint::y, _1 ) );
Или с простой петлей:
for ( std::vector< CGPoint >::const_iterator it = dp->begin(); it != dp->end(); ++it ) {
ycoord.push_back( it->y );
}