1

イテレータ挿入を行う際に、boost :: bindを使用して一連のキーの値を「バインド」する方法はありますか?基本的に、キーのセットを反復処理して、指定された値でマップに挿入します。

map<int, int> mymap;
set<int> myset;
myset.insert(1);
myset.insert(2);
myset.insert(3);
....
myset.insert(100);


for_each(myset.begin(), myset.end(), boost::bind(&mymap.insert,_1, 5); //Should be some make_pair() in here, but not sure how to make this work
4

1 に答える 1

1

はい、それは可能ですが、あなたはそれに満足しません。

次のようになります。

    std::for_each(
      myset.begin()
    , myset.end()
    , std::bind(
          &map<int, int>::insert
        , &mymap
        , std::bind(
              std::make_pair<int, int>
              , std::bind(
                    &std::set<int>::iterator::operator*
                  , std::placeholders::_1
                  )
              , 5
            )
        )
    );

(このコードはテストしていません)

于 2013-03-18T21:04:04.913 に答える