Я знаю, что вы спрашивали о решении C ++, но если кто-то придет сюда в поисках решения Haskell:
import Data.Set ((\\), fromList)
main = do
let s1 = fromList [1,2,3,4,5,6,7,8,9,10]
let s2 = fromList [5,6,7]
print $ s1 \\ s2
Результаты: [1, 2, 3, 4, 8, 9, 10]