Это здесь boolinq — Реализация LINQ C ++ с открытым исходным кодом, совместимая с vs2010. Мне нравится его синтаксис — он выглядит как можно ближе к C # (из краткого обзора во всех других реализациях VS2010 LINQ C ++). Тем не менее, в нем действительно отсутствуют некоторые базовые функции LINQ. Интересно, как можно реализовать .First(lambda expression)
или же .FirstOrDefault(lambda expression)
поддержка в этом?
Так как векторы с ++ имеют front()
и empty()
метод, вам просто нужно сделать следующее:
для .First(lambda)
нужно просто проверить .Where(lambda).ToVector().empty()
, Если это правда, выбросить исключение, иначе вернуть .Where(lambda).ToVector().front()
для .FirstOrDefault(lambda)
нужно просто проверить .Where(lambda).ToVector().empty()
, Если это правда, вернуть значение по умолчанию, в противном случае вернуть .Where(lambda).ToVector().front()
Других решений пока нет …