Код: Выделить всё
std::map map1{ {"test1",1}, {"test2",2}, {"test3",3}, {"test4",4},{"wxyz5",10}};
std::map map2{ {"test1",2}, {"test2",3} };
std::map difference;
std::set_difference(map1.begin(), map1.end(), map2.begin(), map2.end(), std::inserter(difference, difference.begin()), [](const auto& one, const auto& two) { return one.first < two.first; });
Если это так, я попробовал это в лямбда-возврате return one. first != two.first прерывается, поскольку последовательность утверждений не упорядочена. Здесь я ожидаю, что если ключи на обеих картах не одинаковы, верните true, и первый элемент должен быть добавлен в выходные данные. но это не работает.
Возможно, мой способ понять, как каждый алгоритм интерпретирует лямбда-выражение, неверен. Кто-нибудь может объяснить?
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/782 ... ally-works
Мобильная версия