vector SortedIntersection(int *a, int an, int *b, int bn)
{
vector result;
// assuming asscending order.
int *aend = a + an;
int *bend = b + bn;
while (a != aend && b != bend)
{
int candidate = *a;
++a;
while (*b < candidate && b != bend)
{
++b;
}
if (b != bend && candidate == *b)
{
result.push_back(candidate);
++b;
}
}
return result;
}