Вы можете использовать std::set_difference
, но вместо std::inserter
лучше использовать std::back_inserter
, поскольку это наиболее эффективно для std::vector
, и создать std::vector
соответственно:
std::vector<RegistrationMap::value_type> redundantRegs;;
std::set_difference(map1.begin(), map1.end(), map2.begin(), map2.end(),
std::back_inserter(redundantRegs) );
Примечание: в том виде, в котором вы его написали, вам не нужно явно писать компаратор, по умолчанию он будет работать просто отлично. Если вы не используете значение по умолчанию, лучше получить его из std::map
, используя std::map::value_comp()
, вместо того, чтобы писать его явно, поскольку критерии сортировки должны совпадать для карты и std::set_difference
:
std::set_difference(map1.begin(), map1.end(), map2.begin(), map2.end(),
std::back_inserter(redundantRegs),
map1.value_comp() );
Живой пример