If you already have boost installed, I like that option. Otherwise, why not just use a list or vector and add a check (find(k) == std::npos)
on insertion? I suppose it could get kind of slow on a really, reallly large list, but for most cases it would work just fine.