
Alex Фэils?︙
26.07.2018
13:21:42
есть, давай к вопросу сразу. Если новичок - то у нас есть отдельный чат @supapro

Nikita
26.07.2018
13:23:01
у меня вопрос касающийся алгоритмов
?

Alex Фэils?︙
26.07.2018
13:23:10
@pro_algorithms

Google

Nikita
26.07.2018
13:23:19
спс

Igor
26.07.2018
13:23:32
и не стесняйся собирать мысли в один длинный пост вместо кучи маленьких

Alex Фэils?︙
26.07.2018
13:23:35
https://gcc.gnu.org/gcc-8/changes.html - мне вот интересно, НАХРЕНА ломать совместимость в МИНОРНОЙ версии?

Egor
26.07.2018
13:25:15

Nikita
26.07.2018
13:25:32
а как учить алгоритмы (книжки или просто в инете искать их и стараться понимать ) и еще один вопрос как в с++ писать под андройд(фреймворки есть или что)?

Дед Пегас
26.07.2018
13:25:57
crystax смотри.

Antony
26.07.2018
13:28:20

Constantine
26.07.2018
13:35:46
@antoshkka да, докладываю, мы тут случайно выяснили, чем intrusive вероятно отличается от shared_ptr. Так что возвращаемся к отдельному классу

Antony
26.07.2018
13:36:23

Constantine
26.07.2018
13:36:29
(intrusive, вероятно, предполагает модель Deleter aka std::unique_ptr, т.е. неполиморфным)
std::shared_ptr изначально позволяет передавать Deleter шаблонным параметром в конструктор, вероятно, intrusive - не должен, и это принципиальное отличие

Google

Constantine
26.07.2018
13:38:08
поскольку intrusive не предполагает дополнительной аллокации памяти, ему просто некуда положить произвольный Deleter из конструктора
таким образом, линия разграничения проводится по особенностям Deleter и (не)поддержке weak_ptr

Antony
26.07.2018
13:40:13
Ну кажется, что полиморфизм ложится на плечи пользователя. Тоесть Deleter становится параметром, который передаётся напрямую классу указателя
А вот с weak_ptr - да, он никак не ложится (

Constantine
26.07.2018
13:41:04
Тут вопрос можно поставить в абсолют: можно ли default_delete-нуть с incomplete type?
shared_ptr - да
unique_ptr - нет
intrusive_ptr - видимо, нет

Antony
26.07.2018
13:43:22
Если делетер реализовывается как dec_reference_count(incomplete_type_ref), то можно
Но weak_ptr неполучится красиво реализовать

Igor
26.07.2018
13:43:32

Constantine
26.07.2018
13:44:00
С weak_ptr все понятно, можно не обсуждать, он, видимо, просто невозможен/бесполезен в модели без лишней аллокации

Antony
26.07.2018
13:44:27
+1

Constantine
26.07.2018
13:44:31
Там, кажется, аналогом будет нечто вроде intrusive_ptr<optional<T>>
Об этом можно подумать, это отдельный вопрос
Я подозреваю там очень серьезные потенциальные проблемы с incomplete type даже в такой модели, это, видимо, надо уже писать прототипы
Всегда очень неприятно вызывать функции со ссылками на incomplete type в неясном контексте - кто знает, не приедет ли ODR за вызов
Там очень качественно в таких случаях окапываться надо, в духе
//some_fwd.h
namespace my {
struct some;
//declare every overloaded f(some &) that assumed to be called with incomplete type
}
//some.h
#include "some_fwd.h"
namespace my {
struct some { //never forward this type!!!!!!
};
}

Spoonson
26.07.2018
13:51:57

Constantine
26.07.2018
13:54:14
он этот deleter, который параметр конструктора, просто в свой control block пропихает за type erasure
unique_ptr / intrusive_ptr (вероятно) предполагают неаллоцирующие конструкторы

Spoonson
26.07.2018
13:56:55
ну, технически один указатель то на deleter можно было бы выделить всегда, для этого не надо было бы аллоцировать, просто это будет лишнее место занимать и sizeof(unique_ptr<T>) != sizeof(T*) тогда

Constantine
26.07.2018
13:58:50
?

Google

Constantine
26.07.2018
13:59:13
именно что вызов new нужен
это чуть более неприятный момент

Spoonson
26.07.2018
14:02:08
не совсем понимаю зачем. Вот пусть у нас есть unique_ptr который вместо указателя на обьект хранит указатель на обьект и указатель на функцию, который этот обьект удаляет - ну и при создании такого unique_ptr всегда надо указатель на функцию удаляющую. Тогда 1) можно будет обьявлять и удалять unique_ptr с неполным типом 2) в конструкторе не будет аллокаций. Собственно так обычный unique_ptr с deleter и работает. Может я не понимаю в чем проблема.

Constantine
26.07.2018
14:03:30
Deleter для shared_ptr это параметр конструктора и это важно
вы просто не можете положить в объект нечто неизвестного размера без new
в смысле тип Deleter - шаблонный параметр конструктора

Spoonson
26.07.2018
14:06:49
да, теперь мне понятно. Можно положить Deleter произвольного типа, а не строго определенного. Для этого действительно без new не обойтись

Alfred
26.07.2018
14:46:45
Добрый вечер! Не подскажите хороших книг про оптимизацию кода?

Alexander
26.07.2018
14:47:14
оптимизации разные бывают

Ilia
26.07.2018
14:50:06

Igor
26.07.2018
14:55:05
https://www.packtpub.com/application-development/c-high-performance тыц
https://www.agner.org/optimize/optimizing_cpp.pdf туц
по-моему эти две здесь / в книгопомойке пролетали

Alfred
26.07.2018
16:04:09
Спасибо, посмотрю
Кормен, Лейзерсон, Риверст, Штайн.
Это -- лучшая!
https://www.packtpub.com/application-development/c-high-performance тыц
https://www.agner.org/optimize/optimizing_cpp.pdf туц
по-моему эти две здесь / в книгопомойке пролетали

Alexander
26.07.2018
16:18:17

Nikita
26.07.2018
17:38:12
Вообще говоря, стоит начать с алгоритмов
Ибо именно на этой стадии можно добиться наибольшего прироста производительности

Alex Фэils?︙
26.07.2018
18:05:02
/extra #holywar С таким заявлением вам лучше сюда:
[pro.cxx.holywars](https://telegram.me/joinchat/BYlFbECi8UKU0bCqc7jWlQ)

Google


Alex Фэils?︙
26.07.2018
18:08:45
/setrules *Правила*
0. Язык чата — русский. The chat's language is Russian.
1. Простые вопросы (к примеру, о базовом синтаксисе языка, или от новичков в C/C++) , лабы, "помогите с задачкой" и о IDE — в чат новичков: https://telegram.me/joinchat/BYlFbD3eN3JMaG34hyh96w ;
1.1. Холивары – в чат холиваров pro.cxx.holywars — https://telegram.me/joinchat/BYlFbECi8UKU0bCqc7jWlQ ;
2. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств (для этого есть чат холиваров и @flood);
2.0. Не поддавайтесь на провокации, а лучше репортите, написав в реплае @admin;
2.1. Не делайте ложных доносов на людей, и не "пингуйте" администраторов чата зря;
2.2. Не разводите срачи/холивары в этом чате. За разведение срача администрация банит без предупреждения;
3. Не надо оффтопить в этом чате и флудить (в частности не рекомендуется писать кучу мелких сообщений);
3.0. Не стоит злоупотреблять стикерами и (или) кидать их без всякой причины;
3.1. Если хотите переслать (форвардить, forward) несколько сообщений, то склеивайте его в одно. За форвард более 5 сообщений за раз вы получите автокик (с возможностью возврата);
3.2. Голосовые сообщения в этом чате запрещены;
4. Вы можете спросить тематический чат, и вам, по возможности, его подскажут (также можно ввести команду #chatlist, и бот вам напишет списочек известных чатов);
5. Все вакансии, реклама и добавление своего чатика в списочек известных чатов — по согласованию с @AlexFails;
6. Нарушители сначала получают предупреждение, а затем, в случае рецидива, бан на срок от 1 дня до бесконечности;
7. Ознакомьтесь с мини-памяткой по команде #minihelp.
Все правила - /rules.
/extra #minihelp
*Мини-памятка для вошедших*
1. С недавнего момента при входе участнику запрещаются все медиасообщения, стикеры и внедрение ссылок. Это сделано из-за участившегося спама в Телеграм-чатах. Эти ограничения потом снимаются, если участник _вежливо_ попросит одного из администраторов;
2. /rules и хештеги из /extra list работают, если вы написали боту @GBReborn\_bot в лс (он вам и ответит туда), это ограничение апи ботов Телеграма.
3. Сюда бот напишет, если команду активировал один из администраторов чата.
4. Команда /stats даст вам ссылку на небольшую статистику бота. Не надо её вызывать, лучше перейдите сюда: http://combot.org/chat/-1001031904034
5. Не флудите командами ботов! Если нажали на команду, то вы всегда можете удалить ее с помощью кнопки *Delete* в контекстном меню Телеграма;
6. Вопросы для новичков в чат #supapro : https://telegram.me/joinchat/AAAAAD3eN3KytHPyhyh96w
7. Не спрашивайте "кто знает %s?" Пишите сразу вопрос! (P.s. если не знаете про %s, то вам в #supapro);
8. Не надо форвардить (Forward) сообщение, на которое вы отвечаете. Есть кнопка *Reply* (Ответить).


Alexey
26.07.2018
18:09:37
/setrules *Правила*
0. Язык чата — русский. The chat's language is Russian.
1. Простые вопросы (к примеру, о базовом синтаксисе языка, или от новичков в C/C++) , лабы, "помогите с задачкой" и о IDE — в чат новичков: https://telegram.me/joinchat/BYlFbD3eN3JMaG34hyh96w ;
1.1. Холивары – в чат холиваров pro.cxx.holywars — https://telegram.me/joinchat/BYlFbECi8UKU0bCqc7jWlQ ;
2. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств (для этого есть чат холиваров и @flood);
2.0. Не поддавайтесь на провокации, а лучше репортите, написав в реплае @admin;
2.1. Не делайте ложных доносов на людей, и не "пингуйте" администраторов чата зря;
2.2. Не разводите срачи/холивары в этом чате. За разведение срача администрация банит без предупреждения;
3. Не надо оффтопить в этом чате и флудить (в частности не рекомендуется писать кучу мелких сообщений);
3.0. Не стоит злоупотреблять стикерами и (или) кидать их без всякой причины;
3.1. Если хотите переслать (форвардить, forward) несколько сообщений, то склеивайте его в одно. За форвард более 5 сообщений за раз вы получите автокик (с возможностью возврата);
3.2. Голосовые сообщения в этом чате запрещены;
4. Вы можете спросить тематический чат, и вам, по возможности, его подскажут (также можно ввести команду #chatlist, и бот вам напишет списочек известных чатов);
5. Все вакансии, реклама и добавление своего чатика в списочек известных чатов — по согласованию с @AlexFails;
6. Нарушители сначала получают предупреждение, а затем, в случае рецидива, бан на срок от 1 дня до бесконечности;
7. Ознакомьтесь с мини-памяткой по команде #minihelp.
Все правила - /rules.
А можно пожалуйста ссылочку на сорцы бота? Интересно глянуть


Alex Фэils?︙
26.07.2018
18:09:49
github.com/RememberTheAir/GroupButler

Alexey
26.07.2018
18:10:52
Эх, а я думал, что он на плюсах (

Alex Фэils?︙
26.07.2018
18:11:07
на плюсах можно моего бота поглядеть
но там дерьмо, мне не нравится совсем, а времени нет переделать получше

Alexey
26.07.2018
18:11:32
Мне интересно как сделан антифлуд

Vitaly
26.07.2018
18:12:40

Alexey
26.07.2018
18:13:42

Vitaly
26.07.2018
18:14:09

Alex Фэils?︙
26.07.2018
18:14:13
у мну фейлсбот без баз, мне лень их делать)

Alexey
26.07.2018
18:14:38

Alex Фэils?︙
26.07.2018
18:15:09
мб в PwrTelegram API есть, можно тут спросить: https://t.me/pwrtelegramgroupru

Dmitry
26.07.2018
21:58:43

Alexander
27.07.2018
01:05:09
Тут кстати репу нашёл с какой-то реализаций контрактов для шланга - https://github.com/arcosuc3m/clang-contracts
Не могу пояснить за качество реализации, так как ещё не пробовал