#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

struct Obj { static int i; int id; Obj() { id = ++i; } };

int main() {
	Obj a, b, c, d, e, f, g, h, i, j;
	std::vector<Obj> v { a,b,c,d,e,f,g,h,i,j},
					  u {a,e,i},
					  r;
	auto it = std::set_intersection(
		v.begin(), v.end(), u.begin(), u.end(), std::back_inserter(r), 
		[](const Obj x, const Obj y){ return x.id < y.id; }
	);	
	
	for(const auto c : r)
		std::cout << c.id << ' ';
}
int Obj::i = 0;