少し初歩的な質問で申し訳ありません。ベクトルとペアのベクトルがあります
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
}
};
ラムダ式とループのない、よりユーザーフレンドリーな方法があるかもしれません。ご協力いただきありがとうございます。