Gregory
эти ссылки для редких точечных рандомных обращений
Gregory
классика - по вектору рендерим обьекты по этим ссылкам обращаемся из сценариев бизнес логики
Micktu 😬
во, пошла дискуссия
Andrei
Но это неудобно.
Andrei
Если на перформанс плевать, то почему бы просто не вектор уник-поинтеров.
Micktu 😬
грегорий, а движок чего вы программировали?
Andrei
А пользователю брать указатель\референс.
Andrei
Это во всех смыслах каноничное решение.
Andrei
А вектор + оффсет чем лучше в данной ситуации?
Andrei
Нет!
Andrei
Пользователь прямо берет реф на объект.
Andrei
Прямо на сам объект.
Micktu 😬
ну в моем случае не совсем так, потому что есть много мест, где хранится указатель на этот объект
Andrei
И что?
Micktu 😬
грубо говоря все файлы контейнера ссылаются на контейнер
Andrei
Пусть ссылаются.
Andrei
Объект сконструированный через make_unique уже никогда своего места не изменит.
Micktu 😬
(тфв еще ни разу не использовал плюсовые указатели)
Micktu 😬
сразу видно что не разбираюсь
Micktu 😬
в сортах
Andrei
Поэтому на него безопасно брать референс. Единственная гарантия которую надо соблюсти — жизнь вектора с юникпоинтерами — дольше чем использующих его.
Andrei
Но этому легко удовлетворить.
Andrei
Потому что отношение владения прозрачное.
Andrei
Минус вектора значений — необходитмость писать мув конструктор
Andrei
Плюс — потенциально другой алгоритм где мы ходим по нему в цикле будет работать на одну индирекцию меньше.
Micktu 😬
еще вроде задавал вопрос или нет, не помню
Micktu 😬
есть алиас для типа pair map'а?
Micktu 😬
аналогично vector::iterator
Micktu 😬
а то пока что это единственное место где я пишу авто
Andrei
value_type
Andrei
map<K,T>::value_type
Micktu 😬
ес, спасибо!
Andrei
В auto нет ничего дурного, я практически всегда auto пишу.
Micktu 😬
просто в ряде компаний гайдлайны запрещают за исключением лямбд и ОЧЕ ДЛИННО
Micktu 😬
хотя я сам считаю что это глупость и трение
Andrei
Это искуственное довольно ограничение, как по мне.
Micktu 😬
ну да, читать очевиднее, но...
Andrei
Можно было бы сказать, что это мол дополнительнодокументирует код или что-то в таком духе, но на самом деле нет.
Micktu 😬
в сишарпе я отстаивал var всегда и везде
Micktu 😬
ну да, соображение именно в том, что документирует
Andrei
А вот написание и всприятие затрудняет точно.
Micktu 😬
но с другой стороне делает его более кашеобразным и бесчеловесным
Andrei
Угу.
Micktu 😬
во-во
Micktu 😬
так что я еще пока в сомнениях
Micktu 😬
в этом "проекте" на пробу избегаю авто, посмотрю какое отношение сложится
🦥Alex Fails
std::experimental::pmr::string::value_type
Micktu 😬
std::experimental::pmr::string::value_type
для этого я алиасы прописываю
🦥Alex Fails
И то верно
Micktu 😬
Micktu 😬
что в общем-то тоже костыль
Micktu 😬
придет человек а типы незнакомые
Micktu 😬
будет ругаться
Andrei
Осмысленные имена спасают.
Micktu 😬
ну, я думаю это в рамках осмысленности и лаконичности
🦥Alex Fails
LPCWSTR
Micktu 😬
Micktu 😬
они кстати осмысленные но выглядят как вызов ктулу с непривычки
Micktu 😬
в винапи
Micktu 😬
они МАКСИМАЛЬНО краткие и информативные, не придерешься
Micktu 😬
но жутко уродливые
🦥Alex Fails
ага, я почему-т сразу нашел логику их наименования, как в первый раз увидел
Gregory
у меня тоже проблем не возникло
Micktu 😬
я правда не знаю что значит L
Micktu 😬
то ли лонг, то ли хрен знает что
Micktu 😬
на моей платформе это синонимы с PCWSTR
Micktu 😬
если лонг, тогда все с ними очевидно, да
Micktu 😬
long pointer to const wide string
Andrei
по оффсету надо сходить всё равно
Andrei
оператор []
Andrei
Ты в паре вектор + оффсет, держишь указатель на вектор
Andrei
тебе надо получить сам вектор — deref. взять его начало, прибавить offset и deref для получения элемента
Andrei
Когда ты держишь указатель сразу на объект внутри uniq-а то для обращения к объекту только один deref
Micktu 😬
по ситаксису подскажите плиз
Micktu 😬
долбаный скобочки
Micktu 😬
как взять реф от (uint8_t*)data
Micktu 😬
от конкретно этого выражения