Size: a a a

Конференция C++ Russia

2020 June 06

AV

Alexey Veselovsky in Конференция C++ Russia
хм а что такое sentinel?
/mе пошел гуглить
источник

AV

Alexey Veselovsky in Конференция C++ Russia
нагуглил
источник

AV

Alexey Veselovsky in Конференция C++ Russia
источник

m

magras in Конференция C++ Russia
Alexey Veselovsky
хм а что такое sentinel?
/mе пошел гуглить
Рэндж описывается парой iterator + sentinel. На sentinel меньше требования. По-моему только сравнение с итератором необходимо. Это позволяет, например, написать рэндж для null terminated строки. В этом случае sentinel будет разыменовывать переданный итератор и смотреть значение.
источник

m

magras in Конференция C++ Russia
Из минусов пары iterator + sentinel могу назвать то, что такой рэндж потом не запихнешь в контейнер напрмую: они ожидают пару итераторов. А вот for loop умеет работать с такими конструкциями.
источник

DK

Denis K. 🇨🇦🚜🇺🇸🚜🇷🇺... in Конференция C++ Russia
*cyberzx
ренжи слишком сложны для простого C++ пролитериата. где гарантия того, что за этот сахарок я не буду платить производительностью или временем компиляции?
Временем компиляции конечно и еще как, от этого никуда не деться. Рантаймом не сильно и скорее зависит от задачи, если ты пишешь все лениво и без материализаций на каждом шагу, то можешь и улучшить его
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Denis K. 🇨🇦🚜🇺🇸🚜🇷🇺
Временем компиляции конечно и еще как, от этого никуда не деться. Рантаймом не сильно и скорее зависит от задачи, если ты пишешь все лениво и без материализаций на каждом шагу, то можешь и улучшить его
В рантайме тоже. Ведь мы же про дебажную сборку говорим? :-)
источник

DK

Denis K. 🇨🇦🚜🇺🇸🚜🇷🇺... in Конференция C++ Russia
Alexey Veselovsky
В рантайме тоже. Ведь мы же про дебажную сборку говорим? :-)
Nyet, про релиз с о3 😝
источник

DK

Denis K. 🇨🇦🚜🇺🇸🚜🇷🇺... in Конференция C++ Russia
Но кстати опять же. Даже в дебаге если получилось рейнджами сделать лениво взамен перекладывания меж контейнерами, то все равно будет выигрыш. По сравнению с аналогичными форами и ифами будет оверхед конечно. Так что тут вопрос в применении
источник

m

magras in Конференция C++ Russia
Denis K. 🇨🇦🚜🇺🇸🚜🇷🇺
Но кстати опять же. Даже в дебаге если получилось рейнджами сделать лениво взамен перекладывания меж контейнерами, то все равно будет выигрыш. По сравнению с аналогичными форами и ифами будет оверхед конечно. Так что тут вопрос в применении
Ну рэнджи в первую очередь как раз заменяют циклы, а не старые стандартные алгоритмы. Во всяком случае для меня сокращение begin(с), end(с) -> с менее интересно по сравнению с возможностью строить выразительную композицию.
источник

DK

Denis K. 🇨🇦🚜🇺🇸🚜🇷🇺... in Конференция C++ Russia
так я не спорю. Я как раз готов мириться с оверхедом (а на компил тайм я в целом стараюсь не обращать внимания). Жаль только не все рейнджи завезли в стандарт, даже материализации нет. Но один фиг - рейнджи збс
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
Alexander Zaitsev
#BlackLivesMatter
+++, #BlackLivesMeter
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
*cyberzx
ренжи слишком сложны для простого C++ пролитериата. где гарантия того, что за этот сахарок я не буду платить производительностью или временем компиляции?
Да просто же, std::ranges::find(vec, elem);
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
Alexey Veselovsky
хм а что такое sentinel?
/mе пошел гуглить
Коньцепт для останова итерирования
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
Например, у итераторов по си-строкам сентинел - это нуль-терминатор
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
magras
Рэндж описывается парой iterator + sentinel. На sentinel меньше требования. По-моему только сравнение с итератором необходимо. Это позволяет, например, написать рэндж для null terminated строки. В этом случае sentinel будет разыменовывать переданный итератор и смотреть значение.
++
источник

*

*cyberzx in Конференция C++ Russia
Alex Ф-ф-фэils!🌠︙
Да просто же, std::ranges::find(vec, elem);
сложны в смысле под капотом, а не в использовании
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
*cyberzx
сложны в смысле под капотом, а не в использовании
Ну, вот перегрузки для алгоритмов  довольно дубовые
источник

A

Alex Ф-ф-фэils!🌠︙... in Конференция C++ Russia
Да и оно на коньцептах будет все равно в 20-м, и куча lamenations Корентина автоматом отметется
источник

DK

Denis K. 🇨🇦🚜🇺🇸🚜🇷🇺... in Конференция C++ Russia
*cyberzx
сложны в смысле под капотом, а не в использовании
Ну так и хорошо что они реализованы и среднемк программисту не надо их писать самому
источник