const int N = 100;

int main()
{
std::set<int> si1, si2, si3;

for (int i = 0; i < N; i++) {
si1.insert(std::rand() % N);
si2.insert(std::rand() % N);
}

std::insert_iterator<std::set<int> > ins3(si3, si3.begin());
std::set_intersection(si1.begin(), si1.end(), si2.begin(), si2.end(), ins3);

std::copy(si3.begin(), si3.end(), std::ostream_iterator<int>(std::cout, " "));
}

こんな感じだな
ちなみにstd::back_inserterをstd::setに使おうとするとコンパイルエラー