C ++ std :: transform вектор пар-> сначала в новый вектор

Извините за небольшой вопрос новичка. Есть вектор и вектор пар

typedef std::vector <int> TItems;
typedef std::vector < std::pair <int, int> > TPairs;

Есть ли способ преобразовать все первые элементы пары в другой вектор за один шаг

int main ()
{
TItems items;
TPairs pairs;

pairs.push_back (std::make_pair(1,3));
pairs.push_back (std::make_pair(5,7));

std::transform( items.begin(), items.end(), items.begin(), comp ( &pairs ) );

return 0;
}

Как спроектировать функтор?

class comp
{
private:
     TPairs *pairs;

public:
    comp ( TPairs  *pairs_ ) : pairs ( pairs_) { }

    unsigned int operator () ( const unsigned int index ) const
    {
        return  (*pairs)[index].second != pairs->end();  //Bad idea
    }
};

Может быть, есть более удобный метод без лямбда-выражений и петли. Спасибо за вашу помощь.

19
задан Soo Wei Tan 2 May 2012 в 20:56
поделиться