Вы были правы с вашей интуицией. Хотя вы используете пустой вектор, вы должны использовать обратный вставщик для выходного итератора.
Это должно выглядеть примерно так:
std::transform(secondVec.being(), secondVec.end(), back_inserter(firstVec), yourFunctor)
И ваш Функтор выглядит так:
void youFunctor(First param)
{
return param.s1;
}
Редактировать: Boost может помочь вам с лямбда-функцией, поэтому вам не придется создавать отдельный функтор для этой задачи. Следует также отметить, что функция лямбда-функции является частью TR1 и будет интегрирована в стандартную библиотеку C ++.
Редактировать: вот о чем Мередит говорила с mem_fun (или адаптером функции-члена).
struct Second
{
First s1;
int s2;
First getS1() const {return s1;};
};
И тогда преобразование будет выглядеть так:
std::transform(secondVec.being(),
secondVec.end(),
std::back_inserter(firstVec),
std::mem_fun(&Second::getS1))