Перейти к содержанию
    

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

5 hours ago, dxp said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

56 minutes ago, dxp said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

:biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Grizzly said:

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

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, Grizzly said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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'ом общаться)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

39 minutes ago, xvr said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, xvr said:

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

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

 

1 hour ago, AlexandrY said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 билдером собрать?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 minutes ago, xvr said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 minutes ago, xvr said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...