Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 17

Даёшь неделю C++ на Хабре!
Фишка с reverse мне понравилась. FP-style 8)
НЛО прилетело и опубликовало эту надпись здесь
Думаете ему бы понравилось?)
НЛО прилетело и опубликовало эту надпись здесь
Он работает С++-программистом в фейсбуке. Так что перешел, если только духовно, да и то, похоже возращается.
Цитата:
[ тут идет код итерирующий range «от» и «до»]
Есть один минус у STL-итераторов не заметный на первый взгляд, итераторы Java этого минуса лишены.
[тут идет код итерирующий от «начала» до «конца»]

не чувствуете разницу? :) подсказка:
std::accumulate( begin(), advance( begin(), size()/2 ) );
Take/Skip?
то есть менять алгоритм вместо смены диапазона? :)
Нет. Функции Take/Skip позволяют отбросить с начала и с конца записи.
Можно сделать так:

boolinq::from(vec.begin(), vec.begin() + vec.size()/2).where(...) ....
Все гениально — просто!
*(вот теперь я понимаю, почему мой код называют сложным)
Ценю Вашу работу. Активно использую LINQ в C# и разного рода itertools/filter/map/reduce/any/генераторы списков в Python. Очень неплохо иметь похожие механизмы в С++.
Автор крут. rly.
На вашем месте я бы все-таки не использовал неявные конструкторы преобразования типов там, где это явно не требуется.

Например, зачем вам неявный разворот последовательности, если для этой цели предполагается использовать явную функцию reverse?

Кроме того, ваши диапазоны (***Range) невозможно нормально передать в функцию, поскольку их тип постоянно меняется (а писать всюду шаблоны — тоже не лучший выход). Хотелось бы полиморфную обертку к ним.
Тогда это уже не шаблонная библиотека получится… И скорость заметно упадёт.
Я же не говорю, что подобное будет применяться повсеместно! Когда можно обойтись шаблонами — останутся шаблоны.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации