AlexandrY 3 7 января, 2020 Опубликовано 7 января, 2020 · Жалоба 5 hours ago, dxp said: Ещё есть moving semantic, которая позволяет избежать копирования, если оно не нужно. Как обычно видим резкие категоричные выводы на фоне незнания предмета. Правильный ответ для вопрошающего: STL как и C++ в целом ему не нужен, т.к. для него конкретно бесполезен по причине незнания и неприятия оного инструмента. Фича под названием moving semantic требует переписывания пользовательских классов и соответствия стандарту от C++ 11 и выше. Вопрос же ставился как раз о том как избежать всякого дополнительного кода вида boilerplate (а если прямо говорить, то отвлекающей внимание шелухи) и привязки к версиям. Киллер фича на самом деле - ARC, но это фича компилера, в Delphi она есть, а в C++ builder под Windows - нет, в этом загвоздка. Ковыряния в STL ее эмулировать не помогут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 7 января, 2020 Опубликовано 7 января, 2020 · Жалоба Смотрю на вопрос в названии темы: "Какой шаблон из STL применить..." и не понимаю, причём тут: 1 час назад, AlexandrY сказал: требует переписывания пользовательских классов Претензия была в сторону STL, де они убоги, не то что богоподобная VCL. Вот и были предложены варианты - использовать указатели в качестве элементов контейнера или moving semantic. И уж совсем не понятна проблема с С++11 - сейчас труднее найти инструмент, который это не поддерживает. В общем, "кто хочет, ищет способ, кто не хочет - причины" (с). Не нужен вам ни STL, ни C++. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 7 января, 2020 Опубликовано 7 января, 2020 · Жалоба 56 minutes ago, dxp said: Смотрю на вопрос в названии темы: "Какой шаблон из STL применить..." и не понимаю, причём тут: Как будто вы что-то посоветовали по существу вопроса - что применить . Так просто, провоцируете флейм по мере сил. А по жизни я на C++ пишу большой проект, и возиться с оверхедом STL типа итераторов или правилом обязательной реализации трех просто нет времени ради такой мелочи как очереди или списки. В больших проектах имеет смысл брать более функциональные и предметно ориентированные программные компоненты. Вот например VCL, там не очереди, а сразу таблицы в памяти, не списки, а сразу базы данных и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 141 7 января, 2020 Опубликовано 7 января, 2020 · Жалоба 15 минут назад, AlexandrY сказал: Вот например VCL, там не очереди, а сразу таблицы в памяти, не списки, а сразу базы данных и т.д. 15 минут назад, AlexandrY сказал: и возиться с оверхедом STL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 7 января, 2020 Опубликовано 7 января, 2020 · Жалоба У баз данных будто бы совсем нет оверхеда? А уж по сравнению со списками тем более Если вам необходима новая функциональность, то все равно придется писать новый код. От этого никуда не деться. Так что добавить в классы вещи, касаемые перемещения, не так уж и затратно с точки зрения потраченного времени. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 7 января, 2020 Опубликовано 7 января, 2020 · Жалоба 1 hour ago, Grizzly said: У баз данных будто бы совсем нет оверхеда? А уж по сравнению со списками тем более Если вам необходима новая функциональность, то все равно придется писать новый код. От этого никуда не деться. Так что добавить в классы вещи, касаемые перемещения, не так уж и затратно с точки зрения потраченного времени. Что вы называете оверхедом? Я имею в виду бизнес-оверхед. А на счет оверхеда по ресурсам CPU или памяти, я даже не пытаюсь тут спрашивать. Сразу стало ясно что никто их не знает, хотя бы потому что нет стандартной реализации STL. Те же алгоритмы поиска по ключу - темный лес. А если у меня ключ оригинальный? Самому писать алгоритм? Так на кой тогда STL? У баз данных в моем контексте нет бизнес-оверхеда, поскольку именно базы данных мне и нужно реализовать. Я не разрабатываю тулсы или фреймворки, а разрабатываю конечные приложения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 7 января, 2020 Опубликовано 7 января, 2020 · Жалоба 2 минуты назад, AlexandrY сказал: Что вы называете оверхедом? Я считал, что под оверхедом вы подразумеваете ресурсы процессорного времени и/или памяти. 3 минуты назад, AlexandrY сказал: У баз данных в моем контексте нет бизнес-оверхеда, поскольку именно базы данных мне и нужно реализовать. Теперь понятно. В таком случае Delphi вам предоставляет необходимый инструмент, не требующий доработкит вашего кода в части бизнес-логики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 7 января, 2020 Опубликовано 7 января, 2020 · Жалоба 2 minutes ago, Grizzly said: Теперь понятно. В таком случае Delphi вам предоставляет необходимый инструмент, не требующий доработкит вашего кода в части бизнес-логики. Delphi - это язык, нынче язык - не инструмент, а приблуда к фреймворку. Вот если б вы сказали - "вам подходит VCL, а не .NET Core" - вот это я бы посчитал за совет. К сожалению базы данных - это только часть приложения, а мне еще нужен пользовательский интерфейс, локальное сетевое взаимодействие, протоколы IoT, технологии Cloud и Edge Computing и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба On 1/6/2020 at 12:39 AM, AlexandrY said: Потому что VCL поддерживает ARC, а STL нет. Тогда вам подойдут (наверное) контейнерные типы из Qt. QMap или QHash On 12/30/2019 at 9:00 PM, AlexandrY said: Только этот map нужно снабдить еще своей функцией или объектом сравнения Угу, а в списке у вас поиск делается телепатически, или всё же есть критерии, по которым объекты сравниваются? Что вам мешает этот критерий в map отдать? On 12/30/2019 at 9:00 PM, AlexandrY said: и еще своим аллокатором, и еще там итераторы на каждом шагу надо применять. Аллокатор там есть встроенный (почти всех он устраивает), и итераторы далеко не всегда нужны (и без них можно с map'ом общаться) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба 39 minutes ago, xvr said: Тогда вам подойдут (наверное) контейнерные типы из Qt. QMap или QHash Я уже не веду речь о задаче в исходном посте, поскольку она давно решена, и мне советы по поводу нее не требуются. Но поскольку есть запрос на обсуждение что круче, то я всегда за то чтобы обсудить. Итак. Не подойдут потому что они не совместимы с классами VCL. Т.е. в QMap однозначно нельзя передать объект VCL реализованный с использование ARC. И теперь если вы убедительно докажете, что Qt круче VCL , то с удовольствием применю QMap. Пока Qt закидали меня спамом, но так не назвали цену. К таким маркетологам у меня сразу подозрение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба 1 hour ago, xvr said: Тогда вам подойдут (наверное) контейнерные типы из Qt. QMap или QHash Это вы предлагаете Qt билдером собрать? Интересное занятие, конечно: в теории, можно значительно расширить познания потрохов как Qt, так и билдера. 1 hour ago, AlexandrY said: Т.е. в QMap однозначно нельзя передать объект VCL реализованный с использование ARC. То, что несовместимость VCL со всем остальным миром - это неоспоримое преимущество, мы уже поняли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба 1 hour ago, AlexandrY said: Итак. Не подойдут потому что они не совместимы с классами VCL. Совместимы, ровно в той же степени, что и все остальные объекты С++ (тот же STL например) 1 hour ago, AlexandrY said: Т.е. в QMap однозначно нельзя передать объект VCL реализованный с использование ARC. На стороне С++ VCL объекты представленны в виде указателей на них, а не самих объектов. Указатели очевидно передать можно, если нужны именно объекты, то придётся указатели заворачивать в smart поинтеры (не помню как они называются на стороне С++ VCL, но они точно есть) и передавать В любом случае это сугубо теоритические изыскания, т.к. собрать Qt билдеровским компилятором скорее всего не получится. Если нужен именно билдер, то std::map и/или std::unordered_map 1 hour ago, AlexandrY said: И теперь если вы убедительно докажете, что Qt круче VCL , то с удовольствием применю QMap. Даже не буду пытаться - в споры на религиозные темы я не вступаю :) 1 hour ago, AlexandrY said: Пока Qt закидали меня спамом, но так не назвали цену. Под GPL - бесплатна. 21 minutes ago, esaulenka said: Это вы предлагаете Qt билдером собрать? Никоим образом. Про билдер речь вообще не шла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба 26 minutes ago, xvr said: Совместимы, ровно в той же степени, что и все остальные объекты С++ (тот же STL например) Вы так обобщаете на весь комплекс стандартных либ словно сами их писали. Не смешите. Там один ретаргетинг может поломать все ваши представления о свойствах либ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба 21 minutes ago, xvr said: Про билдер речь вообще не шла. Тут уже который день идёт разговор про VCL. Использовать VCL без компилятора от борланда/эмбаркадеро, мне кажется, ещё бОльшее безумие, чем собирать ими Qt ;-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 141 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба 2 часа назад, AlexandrY сказал: Я уже не веду речь о задаче в исходном посте, поскольку она давно решена, и мне советы по поводу нее не требуются Вы слишком хорошо думаете о своей способности телепатически передавать мысли. Вы в следущий раз как-то явно отмечайте где мы читаем, где не читаем, а где рыбу заворачивали. 2 часа назад, AlexandrY сказал: Но поскольку есть запрос на обсуждение что круче Заметьте - запрос, выданый вами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться