C Map插入迭代器绑定

时间:2013-03-18 20:04:59

标签: c++ boost

有没有什么办法可以在执行迭代器插入时利用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

1 个答案:

答案 0 :(得分: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
            )
        )
    );

(未测试此代码)