Jump to content

    

Какой шаблон из STL применить когда надо поддерживать прием по нескольким каналам?

5 hours ago, dxp said:

Ещё есть moving semantic, которая позволяет избежать копирования, если оно не нужно. Как обычно видим резкие категоричные выводы на фоне незнания предмета. Правильный ответ для вопрошающего: STL как и C++ в целом ему не нужен, т.к. для него конкретно бесполезен по причине незнания и неприятия оного инструмента.

Фича под названием moving semantic требует переписывания пользовательских классов и соответствия стандарту от C++ 11 и выше. 
Вопрос же ставился как раз о том как избежать всякого дополнительного кода вида boilerplate (а если прямо говорить, то отвлекающей внимание шелухи) и привязки к версиям.  
Киллер фича на самом деле - ARC, но это фича компилера, в Delphi она есть, а в C++ builder под Windows - нет, в этом загвоздка. Ковыряния в STL ее эмулировать не помогут.
 

Share this post


Link to post
Share on other sites

Смотрю на вопрос в названии темы: "Какой шаблон из STL применить..." и не понимаю, причём тут:

1 час назад, AlexandrY сказал:

требует переписывания пользовательских классов

 

Претензия была в сторону STL, де они убоги, не то что богоподобная VCL. Вот и были предложены варианты - использовать указатели в качестве элементов контейнера или moving semantic.

И уж совсем не понятна проблема с С++11 - сейчас труднее найти инструмент, который это не поддерживает.

 

В общем, "кто хочет, ищет способ, кто не хочет - причины" (с). Не нужен вам ни STL, ни C++.

Share this post


Link to post
Share on other sites
56 minutes ago, dxp said:

Смотрю на вопрос в названии темы: "Какой шаблон из STL применить..." и не понимаю, причём тут:

Как будто вы что-то посоветовали по существу вопроса  - что применить .  
Так просто, провоцируете флейм по мере сил.  

А по жизни  я на C++ пишу большой проект, и возиться с оверхедом STL типа итераторов или правилом обязательной реализации трех  просто нет времени ради такой мелочи как очереди или списки. 
В больших проектах имеет смысл брать более функциональные и предметно ориентированные программные компоненты.  Вот например VCL, там не очереди, а сразу таблицы в памяти, не списки, а сразу базы данных и т.д.  
 

Share this post


Link to post
Share on other sites
15 минут назад, AlexandrY сказал:

Вот например VCL, там не очереди, а сразу таблицы в памяти, не списки, а сразу базы данных и т.д.  

 

15 минут назад, AlexandrY сказал:

и возиться с оверхедом STL

:biggrin:

Share this post


Link to post
Share on other sites

У баз данных будто бы совсем нет оверхеда? А уж по сравнению со списками тем более :biggrin:

Если вам необходима новая функциональность, то все равно придется писать новый код. От этого никуда не деться. Так что добавить в классы вещи, касаемые перемещения, не так уж и затратно с точки зрения потраченного времени.

Share this post


Link to post
Share on other sites
1 hour ago, Grizzly said:

У баз данных будто бы совсем нет оверхеда? А уж по сравнению со списками тем более :biggrin:

Если вам необходима новая функциональность, то все равно придется писать новый код. От этого никуда не деться. Так что добавить в классы вещи, касаемые перемещения, не так уж и затратно с точки зрения потраченного времени.

Что вы называете оверхедом?
Я имею в виду бизнес-оверхед. 
А на счет оверхеда по ресурсам CPU или памяти, я даже не пытаюсь тут спрашивать.
Сразу стало ясно что никто их не знает, хотя бы потому что нет стандартной реализации STL.  
Те же алгоритмы поиска по ключу - темный лес. А если у меня ключ оригинальный?  Самому писать алгоритм?  Так на кой тогда STL? 

У баз данных в моем контексте нет бизнес-оверхеда, поскольку именно базы данных мне и нужно реализовать.
Я не разрабатываю тулсы или фреймворки, а разрабатываю  конечные приложения. 

 

Share this post


Link to post
Share on other sites
2 минуты назад, AlexandrY сказал:

Что вы называете оверхедом?

Я считал, что под оверхедом вы подразумеваете ресурсы процессорного времени и/или памяти.

3 минуты назад, AlexandrY сказал:

У баз данных в моем контексте нет бизнес-оверхеда, поскольку именно базы данных мне и нужно реализовать.

Теперь понятно. В таком случае Delphi вам предоставляет необходимый инструмент, не требующий доработкит вашего кода в части бизнес-логики.

Share this post


Link to post
Share on other sites
2 minutes ago, Grizzly said:

Теперь понятно. В таком случае Delphi вам предоставляет необходимый инструмент, не требующий доработкит вашего кода в части бизнес-логики.

Delphi - это язык, нынче язык - не инструмент, а приблуда к фреймворку. 
Вот если б вы сказали - "вам подходит VCL, а не  .NET Core" - вот это я бы посчитал за совет. 
К сожалению базы данных - это только часть приложения, а мне еще нужен пользовательский интерфейс, локальное сетевое взаимодействие, протоколы IoT, технологии Cloud  и Edge  Computing и т.д.  

Share this post


Link to post
Share on other sites
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'ом общаться)

Share this post


Link to post
Share on other sites
39 minutes ago, xvr said:

Тогда вам подойдут (наверное) контейнерные типы из Qt. QMap или QHash

Я уже не веду речь о задаче в исходном посте, поскольку она давно решена, и мне советы по поводу нее не требуются. 
Но поскольку есть запрос на обсуждение что круче, то я всегда за то чтобы обсудить. 

Итак. Не подойдут потому что они не совместимы с классами VCL.
Т.е. в QMap однозначно нельзя передать объект VCL реализованный  с использование ARC.
И теперь  если вы убедительно докажете, что  Qt круче  VCL , то с удовольствием применю QMap. 
Пока Qt закидали меня спамом, но так не назвали цену. К таким маркетологам у меня сразу подозрение.  

Share this post


Link to post
Share on other sites
1 hour ago, xvr said:

Тогда вам подойдут (наверное) контейнерные типы из Qt. QMap или QHash

Это вы предлагаете Qt билдером собрать? Интересное занятие, конечно: в теории, можно значительно расширить познания потрохов как Qt, так и билдера.

 

1 hour ago, AlexandrY said:

Т.е. в QMap однозначно нельзя передать объект VCL реализованный  с использование ARC.

То, что несовместимость VCL со всем остальным миром - это неоспоримое преимущество, мы уже поняли.

Share this post


Link to post
Share on other sites
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 билдером собрать?

Никоим образом. Про билдер речь вообще не шла.

Share this post


Link to post
Share on other sites
26 minutes ago, xvr said:

Совместимы, ровно в той же степени, что и все остальные объекты С++ (тот же STL например)

Вы так обобщаете на весь комплекс стандартных либ словно сами их писали. Не смешите.   
Там один ретаргетинг может поломать все ваши представления о свойствах либ.   

Share this post


Link to post
Share on other sites
21 minutes ago, xvr said:

Про билдер речь вообще не шла.

Тут уже который день идёт разговор про VCL. Использовать VCL без компилятора от борланда/эмбаркадеро, мне кажется, ещё бОльшее безумие, чем собирать ими Qt ;-)

Share this post


Link to post
Share on other sites
2 часа назад, AlexandrY сказал:

Я уже не веду речь о задаче в исходном посте, поскольку она давно решена, и мне советы по поводу нее не требуются

Вы слишком хорошо думаете о своей способности телепатически передавать мысли. Вы в следущий раз как-то явно отмечайте где мы читаем, где не читаем, а где рыбу заворачивали.

2 часа назад, AlexandrY сказал:

Но поскольку есть запрос на обсуждение что круче

Заметьте - запрос, выданый вами.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now