To just copy the vector into the set, you could use std::copy and an insertion iterator. Something like:
std::copy(s_vector.begin(), s_vector.end(), std::inserter(s_set, s_set.end()));
Of course this doesn't use boost::lambda at all, so it probably doesn't help you generalise this into doing what you want. It would be better to know more about what you're trying to do here. I'm going to assume, based on your mention of lambda::_if, that your lambda is going to do some kind of filtering of the input vector before inserting into the set.
The following (complete, tested) example shows how to copy only strings which are <= 4 characters from the vector into the set:
#include <boost/assign/list_of.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/test/minimal.hpp>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
using namespace boost::lambda;
using namespace boost::assign;
int test_main(int argc, char* argv[])
{
vector<string> s_vector = list_of("red")("orange")("yellow")("blue")("indigo")("violet");
set<string> s_set;
// Copy only strings length<=4 into set:
std::remove_copy_if(s_vector.begin(), s_vector.end(), std::inserter(s_set, s_set.end()),
bind(&string::length, _1) > 4u);
BOOST_CHECK(s_set.size() == 2);
BOOST_CHECK(s_set.count("red"));
BOOST_CHECK(s_set.count("blue"));
return 0;
}
Hopefully this gives you something to go on?
Also let me reiterate the point made above that boost::bind and boost::lambda::bind are two different beasts. Conceptually they are similar, but they produce outputs of different types. Only the latter can be combined with other lambda operators.