Как на самом деле работает лямбда-функция в заданных алгоритмах на C++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как на самом деле работает лямбда-функция в заданных алгоритмах на C++?

Сообщение Anonymous »

Мне интересно, как стандартные алгоритмы интерпретируют лямбда-выражения. В приведенном ниже примере я использую алгоритм std::set_difference для двух карт. Но вопрос общий для всех алгоритмов и функции сравнения.

Код: Выделить всё

    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; });
Я получаю правильный вывод: {"test3",3}, {"test4",4},{"wxyz5",10}.Вопрос в том, если функция сравнения возвращает true, будет ли первый элемент добавлен к выводу?
Если это так, я попробовал это в лямбда-возврате return one. first != two.first прерывается, поскольку последовательность утверждений не упорядочена. Здесь я ожидаю, что если ключи на обеих картах не одинаковы, верните true, и первый элемент должен быть добавлен в выходные данные. но это не работает.
Возможно, мой способ понять, как каждый алгоритм интерпретирует лямбда-выражение, неверен. Кто-нибудь может объяснить?
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/782 ... ally-works
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»