Как стать автором
Обновить
33
0
Кирилл Плешивцев @drBasic

Пользователь

Отправить сообщение
Вот ведь! все уже придумано до нас :-)
Не получится, так как неизвестен тип поля, к которому обращаемся в лямбде.
То ли лыжи не едут… Поставил habracut text="Подробности" /> а оно не режется.
Производительность все-же будет отличаться, так как в моем примере сортироваться будут указатели, а не сами объекты. Если копирование объектов — это тяжелая операция, то разница будет.
В linq легко можно добавлять в конвеер обработки новые операции, и не заморачиваться с ручным управлением, того, куда направить промежуточный результат. Если можно обработать на лету — будет сдалано без дополнительных буферов, а если нужен, то будет промежуточный буфер из указателей. Да, вручную, возможно, получится написать эффективнее, но это потребует дополнительного времени разработки. В случае же linq производительность наверняка будет выше наивного подхода с выделением на каждом этапе буфера и копирования в него. Представленная реализация оптимизирует именно копирования, для int и double это, конечно ничего не дает, но вот для «тяжелых» объектов прирост скорости будет!
При достаточно глубоких decltype в какой-то момент IntelliSense отключался. В Visual Studio 2012 работало по-лучше, но все равно постоянно сталкивался с отсутствиями подсказок.
Получилось некое подобие на Linq to object, с откровенно говоря, неудобным синтаксисом, и в большинстве своем не работающем IntelliSense. Но это лучше чем ничего, к тому же у меня интерес был скорее образовательный – погружение в новый с++11 и разминка мозгов. Результат оказался вполне работоспособный и сэкономил мне сотни строк явных циклов.
Да, скорее всего, построить SQL запрос на основании цепочки преобразований не получится, т.к. для этого нужно заглянуть в лямбду и посмотреть, что же она делает. В .net для этого компилятор строит дерево выражения (Expression Trees), в С++ такого нет.

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность