【发布时间】:2012-02-24 00:48:01
【问题描述】:
抱歉,有点初学者问题。有向量和向量对
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
}
};
也许有一些更用户友好的方法,没有 lambda 表达式和循环。感谢您的帮助。
【问题讨论】:
标签: c++ vector transform functor std-pair