Size: a a a

2020 June 30

A

Alex in pro.cxx
так да, на структуру, так и имел в виду
источник

АК

Александр Караев... in pro.cxx
Alex
так да, на структуру, так и имел в виду
один указатель + индекс - это не "тяжелый" итератор
источник

A

Alex in pro.cxx
Но тяжелее, чем просто индекс)
Красивее способа нет?
источник

RR

Roman Rubanenko in pro.cxx
Мне было бы интересно посмотреть на красивое решение только с индексом.
Если максимально некрасиво, медленно, и если известны верхние границы на размеры векторов и количество инстансов структуры,  то можно в индекс кодировать номер_инстанса и номер_вектора, храня ссылки на инстансы по номеру где-то отдельно.
источник

RR

Roman Rubanenko in pro.cxx
(если в итоге верхние границы позволят это сделать)
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Oleksandr Senkovych
про error я знаю. Мне чуток не то нужно. У меня есть билд система которая генерирует хедер с кучей
#define CONFIG_KEY CONFIG_VALUE

Я хотел бы чтоб если я сделаю опечатку в названии дефайна чтобы оно не собиралось, при этом чтоб не писать простыню. Например в идеале если у меня есть код
#if CONFIG_PTHREAD
#include <pthread>
#endif

я хотел бы чтоб препроцессор валился если CONFIG_PTHREAD не определен. Я согласен написать обертку вокруг названия переменной
#if CHECK_CONFIG(CONFIG_PTHREAD)
#include <pthread>

но я не хочу писать простыни типа
#ifdef CONFIG_PTHREAD
#if CONFIG_PTHREAD
#include <pthread>
#endif
#else
#error "Invalid variable name"
#endif
-Wundef
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Alex
Но тяжелее, чем просто индекс)
Красивее способа нет?
Написать vector_aggregator, чей end() будет предвычислять минимальную длину
источник

A

Alex in pro.cxx
а есть в стандарте адаптер, чтобы делать for (auto&& item: {begin, end}) вместо for (auto it = begin; it != end; ++it) ?
источник

A

Alex in pro.cxx
не считая ranges, их у меня ещё нет
источник

O

Ofee in pro.cxx
Alex
а есть в стандарте адаптер, чтобы делать for (auto&& item: {begin, end}) вместо for (auto it = begin; it != end; ++it) ?
std::span, наверное, но с C++20
источник

A

Alex in pro.cxx
понял, точно, спасибо
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Ofee
std::span, наверное, но с C++20
У спана итератор раи
источник

DC

Denis Chernikov in pro.cxx
Ofee
std::span, наверное, но с C++20
А он разве не абстрагирует contiguous memory?
источник

O

Ofee in pro.cxx
Artöm Bakri Al-Sarmini
У спана итератор раи
@das_3sz3tt, @deiuch, я почему-то периодически забываю, что не все итераторы к ним относятся. Так что да, подойдёт только в частном случае
источник

АР

Андрей Руссков... in pro.cxx
Alex
а есть в стандарте адаптер, чтобы делать for (auto&& item: {begin, end}) вместо for (auto it = begin; it != end; ++it) ?
ну в ranges, а вообще циклы по диапазонам итераторов часто лучше смотрятся в виде алгоритмов
источник

АР

Андрей Руссков... in pro.cxx
а-ля for_each(begin, end, ...)
источник

АР

Андрей Руссков... in pro.cxx
хотя в зависимости от тела цикла тебе возможно нужен даже не for_each
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Андрей Руссков
а-ля for_each(begin, end, ...)
Немного неудобно, если капча лямблии раздувается
источник

АР

Андрей Руссков... in pro.cxx
Artöm Bakri Al-Sarmini
Немного неудобно, если капча лямблии раздувается
&
источник

A

Alex in pro.cxx
Именно for_each, но это самый бессмысленный стандартный алгоритм, я не буду загромождать им код
источник