Этого треда уже нет.
Это копия, сохраненная 25 августа 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
изображение.png1002 Кб, 1000x563
Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/ /cpp/ # OP 1392196 В конец треда | Веб
sage 2 1392197
>>392196 (OP)
ору с дурачка, весь раздел засрал
3 1392200
>>392196 (OP)
В следующий раз у тебя обязательно получится! Не сдавайся!
4 1392295
>>392196 (OP)
Заставь дурака тред перекатывать.
5 1392988
>>1392865

> https://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file


Кстати, то, что для инстанциации шаблонов нужно иметь исходники — это чисто деталь реализации. Стандарт разрешает инстанциацию шаблонов без их исходного кода.
https://timsong-cpp.github.io/cppwp/n4659/lex.phases#1.8

> The definitions of the required templates are located. It is implementation-defined whether the source of the translation units containing these definitions is required to be available.

7 1393212
>>393199

>www.vitorian.c...


Хм А почему этот сайт мне средство увелечения пениса предлагает? В это м есть какой-то скрытый смысл?
8 1393213
>>393212
Мне не предлагает.
9 1393217
>>393213
Ты JS-ник и у тебя нет пениса.
10 1393220
мне тоже не предлагает, но у меня пенис к сожалению есть

мимо js-ник
photo2019-03-1820-25-02.jpg79 Кб, 1280x897
11 1393953
Ребята, помогите. У меня есть динамический массив и я передвигаю указатель по элементам. Как мне выяснить, что указатель вышел за пределы массива ? Размера массива у меня нет. Я предполагаю что методом try-catch, но не пойму как закодить.
12 1393957
>>393953
Какого массива? std::vector?
13 1393960
>>393220

> к сожалению


Котомальчик, залогинься.
14 1393966
Какой же раст всё-таки офигенный по сравнению с этим калом.
15 1393974
>>393957
Нет обычного, выделил память с помощью new.
16 1393976
>>393974
Тогда надо знать размер.

Неверный доступ для обычного массива [] не кинет С++ эксепшен.
17 1394033
Двощ, обоссы. Я тупой сказочный долбоёб и нихуя не понимаю.
1) Нестед классы ведь видят друг друга, не так ли? Если мой interface является другом insides, то он должен быть способен пользоваться приватными методами и переменными, не так ли? Так какого хуя компилятор жалуется на приватность?
2) invalid use of non-static method - это ещё что за хуйня? Гугл не помогает. Почему я не могу получить доступ к переменной, и при чём тут метод?
18 1394047
Я-то, скорее всего, перестану изобретать велосипед и обойдусь простеньким attorney-client паттерном, но я, блять, нихуя не понял, почему мой код даже не скомпилился. Просто, блять, без понятия.
19 1394051
>>394033
Ты из какого языка пришел?

Напоминаю, что класс - это описание того, как обходиться с данными объектов, причисляющих себя к этому классу. У тебя в программе не создано ни одного экземпляра/объекта класса. К чему по-твоему должен относиться insides::filepath? Этих данных просто не существует.
изображение.png6 Кб, 738x53
20 1394110
>>394051
С исключительно базового си.

>Этих данных просто не существуют.


>Нет объекта.


Да, ты прав. Я в своём примере обращал к переменной без его объекта. Там явно должно было быть не
insides::filepath, это уж точно.
21 1394231
>>394110
У тебя очень своеобразный подход к ООП-дизайну, поэтому я подумал, что ты из чего-нибудь эдакого пришел, например из жс или питона. Там подобный код даже прокатил бы.

>attorney-client


Я в проде не встречал подобного. А на стековерфлоу как бы намекают, мол нахер надо. Действительно, зачем тебе это нужно, если есть наследование? Создай базовый класс interface с чисто виртуальными функциями, отнаследуй от него insides и перегрузи (реализуй) методы. Или, еще тупее, "раскрой скобки", то есть все содержимое класса insides засунь в приват bike_file, все методы из interface выкинь в public и удали нахер два бесполезных вложенных класса.

Друзья не нужны.
изображение.png16 Кб, 775x498
22 1394246
>>394231

>Создай базовый класс interface с чисто виртуальными функциями, отнаследуй от него insides и перегрузи (реализуй) методы.


Собирался запилить вместо друзей, но вначале решил попробовать их.

>Или, еще тупее, "раскрой скобки", то есть все содержимое класса insides засунь в приват bike_file, все методы из interface выкинь в public и удали нахер два бесполезных вложенных класса.


Что-то подобное запилил на пикриле сам.
23 1394260
Я прям сразу вижу несколько недостатков:
1. избыточный синтаксис, inner_obj не нужен.
2. к каждому интерфейсу прикреплены свои личные кишки; нахуй это сдалось, кишки должны быть независимы от своего интерфейса, и наоборот.
3. не стандарт.
100% ещё что-нибудь не так. Такие дела.
24 1394298
>>392196 (OP)
Плюсики, я уже обращался по этому вопросу, но все же.

>C. В программе должен быть создан визуальный интерфейс.


Тогда я вопросил является ли CLI визуальным интерфейсом, особенно если там реализованны диалоговые меню с применением спец символов + таблицы с преминением псевдографики.

Анон тогда ответил что CLI является абстракцией визуального интерфейса и мол я могу пилить курсач не боясь обосраться.

Так вот, запилить - то я его запилил, верстаю сейчас РПЗ. Тут нужно в пункте про разработку визуального интерфейса накидать побольше аргументов в мою пользу иначе препод может доебаться а крыть мне будет особо нечем.

Если CLI дейтствительно счтается за визуальный интерфейс (суть в том что не указано же прямо -- графиеский), не могли бы вы предоставить пруф какой, или интересную позицию на это счет.

Спасибо.
25 1394328
>>394033

>Двощ, обоссы.


Всегда пожалуйста.

>Нестед классы ведь видят друг друга, не так ли?


Видят, но не так, как ты думаешь.

>Если мой interface является другом insides


bike_file::interface не является другом bike_file::inside.
Класс, впервые объявленный во friend declaration, объявляется в ближайжем окружающем неймспейсе, в твоём случае, видимо, глобальном. Там же, где mister_client.

Это знать надо. Это классика, блять.

Объяви класс bike_file::interface до bike_file::inside. Типа
class bike_file {
private:
class interface;
class insidea {
...
frind class interface; // interface здесь == bike::interface
};
26 1394378
Есть смысл изучать сабж для вкатывания в IT? Или без вышки и 5 лет опыта пользы всё равно не будет?
27 1394404
>>394378
Мне кажется, что в крестах без хорошего образования будет тяжело зарабатывать. Нормальные деньги платят только за лютое задротство вроде HFT или Computer Vision (и то не всегда), но даже там зарплаты максимум на уровне обычных крудошлепов/фронтендеров. "Обычный" кодер-плюсовик без глубоких познаний в математике получать будет в среднем процентов на 30 меньше аналогичных спецов по другим языкам.
28 1394426
>>394298
Не знаю, кто тебе такой совет давал, но здравый смысл (и опыт обучения в наших вузах) говорит о том, что они хотят именно формочки с кнопками - может быть, прокатит, но не скажу наверняка.
29 1394428
>>394404

> максимум на уровне обычных крудошлепов/фронтендеров


Ну тут хуй знает, но в остальном ты прав - средний плюсовый макак будет пилить легаси в каких-нибудь госконторах за гроши.
30 1394433
>>394298

> Тут нужно в пункте про разработку визуального интерфейса накидать побольше аргументов в мою пользу иначе препод может доебаться а крыть мне будет особо нечем.


> Если CLI дейтствительно счтается за визуальный интерфейс (суть в том что не указано же прямо -- графиеский), не могли бы вы предоставить пруф какой, или интересную позицию на это счет.


Ты о совершенно не связанных вещах говоришь.
Аргументы в пользу CLI - малые времязатраты, обладает всеми нужными возможностями, универсален.

Является ли он визуальным - да, йдля взаимодейчтвия с таким интерфейсом необходимо на него смотреть.
31 1394446

>ActiveX, MFC


Совсем говно мамонта? Вакансия не предполагает глубоких знаний, но на месте разобраться и работать с этим заставят.
32 1394456
>>394446
Да, совсем.
33 1394495
>>394404
Ну ладно, хотя бы неплохая база для изучения других языков будет.
34 1394529
>>394495
Вкатывался такой в кресты 3 года, а потом оказалось, что рыночек порешал и бизнес хочет себе сишарп или джава девелоперов со знанием кучи фреймворков, в которых ты не шаришь.

>хотя бы неплохая база для изучения других языков будет


Какой смысл в языке, если ты не разбираешься в том, как устроен современный процесс разработки, не знаешь ни одного бизнес-фреймворка и не шаришь в предметных областях энтерпрайза? Снова в 30 или сколько там лет пойдешь грести джуниор джава девелопером на галеру? Лучше уж дальше в роли синьер цпп дева месить легаси за 60к не снимая свитер.
35 1394540
>>392196 (OP)
Пацаны, не знаю еще куда обратиться, поэтому пощу здесь:
Я далек от архитектуры операционок, поэтому назрел вопрос: по какой причине на Винду имеется столько разнообразных вирусов всех форм и мастей, а в UNIX-подобных системах таких раз-два и обчелся?
Обе операционки написаны в основном на С/С++ - но откуда такая разительная разница?..
36 1394666
>>394298
Спросил бы у препода а не двача, лол.
37 1394669
>>394540
http://gs.statcounter.com/os-market-share/desktop/worldwide
Зачем тратиться ради 1.63% пользователей, которые к тому же скорее просто просто вайпнут диски, а не станут платить разблокировать экран?
38 1394863
Как char может хранить UTF-8 символы если в char влазит только 255 символов?
39 1394866
>>394863
UTF-8 совместим с первыми 128 чарами из ASCII (7 бит, 127 чаров на латиницу + спецсимволы).
Т.е часть того что есть в ASCII закодировано точно также и в UTF-8, но разумеется UTF-8 - более обширная кодировка, и для всего что не входит в ASCII (например для кириллицы, или китайских иероглифов) код чара будет занимать больше 8 бит. Цифра рядом с UTF это минимальный размер одного чара, но максимальный может быть и 32 бита.
40 1394868
>>394863
Ну а вообще никак не может. Разве что некоторые символы хранить в нескольких чарах.
41 1394869
>>394866
В этом посте подразумевается что чар = символ, а не char-тип из С/С++
42 1394879
>>394866
>>394868
Да, оказалось что хранит подряд. Если положить один китайский символ в string то .size() вернет 3.
43 1394948
>>394863
utf8everywhere.org
image.png112 Кб, 902x530
44 1394988
щто-нибудь из этого порекомендуете? дошел в шлее до калькулятора и почувствовал что навернул говна. не может же хорошая книга иметь такие коряво работающие примеры и даже не попытаться оправдаться в тексте.
45 1394989
>>394988
книжка по сдвг случайно туда попала
46 1394990
>>394988
Шлее
47 1395215
>>394540
>>394669 этот в большей степени прав, на виндах можно нормально админить, так что никакая зараза (почти) не пролезет, но пользователи обычно раздают UAC на лево/право. Фактически, юзверь сам ставит вирусы, если брать шинду в вакуууме то заюзать какой - нибудь эксплойт будет не легче чем на никсах, а того и сложнее.

По факту, мест куда можно запрятать малварь в ляликсе в десятки раз больше чем на шинде, однако хуй кто в эти места пустит без uid = 0
48 1395311
Анон, можешь помочь с написанием анализатора на сpp? Есть правила правосторонней грамматики:
S->Sa|Sb|Ac
A->Ac|d
знаю что он недетерминированный и что РС-методом описать не получится, но алгоритм то есть?
Хз что делать с нетерминалом А, пытался до этого сделать в тупую:
bool scan(){
enum state{H,A,S,Er}
state CS=S, char c;
do { switch(CS) {
case H:
if(c=='d') {gc(); CS=A;} else CS=Er;
break;
...
но вот че с А делать хз.
49 1395348
>>395311
Мне кажется, что эта грамматика описывает строки, начинающиеся на d, имеющие несколько подряд букв c, а затем в любом порядке a или b, то есть регулярка будет выглядеть как-то так:

> dc(a|b)


В крестах остается только закодировать регулярку (гугли std regexpr) и матчить входящие строки

Даже если я не прав, обычно алгоритм такой:
1. Устранить левостороннюю рекурсию
2. Построить из грамматики автомат
3. Используя автомат, матчить строки
50 1395349
>>395348
Бля, опять звезды проебал. А еще там после c плюс, вроде

> dc+(a|b)*

51 1395547
Это же нихуя не легитимный? Или всем похуй? Короче напишу здесь.
Посмотрел вот это: https://www.youtube.com/watch?v=g2iyNH2Gh1k
Ахуел когда узнал что С++ пишет всего несколько человек. ПИЗДЕЦ! Как так?
52 1395575
>>395547
Кресты непродуктивны. Кому в 2к19 нужен язык без менеджера пакетов, с ограниченной стандартной библиотекой (нет бд, нет сети), с ручным управлением памятью, и необходимостью компилировать под каждую отдельно взятую систему? Сравни с жавой, питоном, да и вообще любым современным языком, где имея пустую операционную систему ты за 10 минут без заранее написанных скриптов поставишь все необходимое для разработки и напишешь простенький клиент для бд, который соберёшь один раз и он сможет на работать на всех компьютерах в мире.
53 1395585
>>395575
Ты смотрел хоть видео которое я скинул? Там парень на рабочем примере, в реальной топ-тир компании в Яндексе, на реальной рабочей задаче, получил прирост в 100 раз по-сравнению с джавой. 10000% прирост, Карл.

На вот еще посмотри что завезут новым стандартом, ахуеешь. https://www.youtube.com/watch?v=g2iyNH2Gh1k

С++ активно развивается, быстрее чем джавазвучит иронично, к 2023 году это будет просто вынос мусора с рынка.
54 1395586
>>395585
Обосрался с ссылкой. Вот: https://www.youtube.com/watch?v=xkshva7DKfQ

быстрофикс
55 1395587
>>395585

>На вот еще посмотри что завезут новым стандартом


Очередная хуйня для написания собственных велосипедов вместо сервисов, написанных на jvm? С++ как всегда нереально далек от современных бизнес-задач.
56 1395595
>>395587

>бизнес-задач


Бизнес-хуизнес.
Как же заебли эти кабанчики, у которых вместо логики бизнес-логика, пиздец просто.
57 1395601
>>395595
Извини, эпоха гаражных программистов и сомнительного десктоп-софта ушла.
58 1395625
>>395587
Ну давай, расскажи какие бизнес задачи решаются на джаве лучше чем на С++.
59 1395628
>>395625
Запилить прототип йоба софтины, которая решает все бизнес-задачи сводится к предсказанию будущего.
Тянуть бабло с заказчика настолько долго, на сколько это возможно.
изображение.png40 Кб, 420x294
60 1395780
>>395575

>работать на всех компьютерах в мире

1383427012448.gif180 Кб, 404x416
61 1395784
>>395780

>твой пик


Но ведь всё так и есть.
62 1395785
>>395780
Так-то С++ на еще больших платформах поддерживается, чем JAVA. Холивары JAVA vs C++ в 2019 году... Ну это как-то уже не смешно даже.
Стикер512x512
63 1395786
Зашел я в ява тред... Не могут перекатиться к 800 посту. Даже тут тормозит все.
64 1395808
>>395786
тут у плюсов случился андефайнд бихевиор вместо переката, а ты смеешься
65 1395810
Почему на c++ с stl так неприятно писать?
Всюду замудрёные шаблоны в шаблонах в шаблонах, из-за которых я не могу использовать stl, если я его не изучал, потому что никаких комментариев нигде нету, имена аргументов в методах вырвиглазные, не всегда возможно по описани что конкретно какая функция возвращает, поэтому нужно постоянно заходить на cppreference, вместо того чтобы просто наводить мышку на метод и смотреть и видеть краткую документацию.
Это норма или я чего-то не понимаю?
66 1395811
>>394989
Нет, не случайно.
изображение.png3 Кб, 781x79
67 1395814
Нахрена символьная функция возвращает инт?
Бред какой-то
68 1395819
>>395585

> на реальной рабочей задаче, получил прирост в 100 раз по-сравнению с джавой. 10000% прирост, Карл.


Некорректное сравнение. Он пользовался до этого сторонней жава-программой, которая использует нечколько общих алгоритмов, что в сумме неэффективно, вместо одно специализированного. Вот если бы он для сравнения написал бы на жаве программу с эффективной реализацией, как и на С++, тогда было бы на что смотреть.
69 1395821
>>395814
Си легаси. Очень сильно сказывается на строках и всем, что с ними связано.
70 1395829
>>395821
Ну допустим легаси, ладно, пускай си.
Но нафига мне современный компилятор пишет варнинг, когда я функцию по назначению использую?
Или
char symbol = toupper(x) - это говнокод?
71 1395834
>>395829
upd:
только щас заметил, что у ней еще и аргумент тоже int оказывается
72 1395885
>>395585
О! Опять Жабу хороним? В какой раз уже?..
73 1395888
>>395885
О! У Жаба пидора выходные? Че там как? Бизнес не давит нигде?..
74 1395917
>>395819
Он там говорит, что пытался переписать и его коллеги тоже, ничего лучше не вышло. Все корректно. 10000% прирост.

>>395885
Так она уже мертва как несколько лет. Это вот индивид тут появился внезапно в С++ треде почему-то и начал в уши нам заливать свое говнище.
75 1395943
>>395917

> Он там говорит, что пытался переписать и его коллеги тоже, ничего лучше не вышло.


Он сказал, что другая компания пыталась сделать улучшенную версию этого логгера. То есть даже не специальный оптимальный алгоритм конкретно под ту задачу.
76 1396019
>>395888
Да не, я из Питонопараши пожаловал
77 1396436
Your account has been locked
We’ve detected some activity that violates our Microsoft Services Agreement and have locked your account.
И так с каждым аккаунтом. Это microsoft выпрашивает номер?
78 1396525
>>396436
Это в Outlook?
79 1396746
Анон привет. Поясни за Clion, у него дебагер не понимает, что такое map??? А что тогда юзать для с++ на гей оси?
80 1396751
>>396746
XCode попробуй.
81 1396767
>>396751
XCode это одна из самых хуевейших IDE в мире.
И это не только мое мнение смотри его рейтинг в апсторе
82 1396773
>>396767
Ну тогда енжой йор Clion.
83 1396931
>>393953
Clang address sanitizer. Больше никак. Ещё можешь создавать вектор вместо массива и передавать ссылку на вектор вместо указателя.
>>394033
1) Скорее всего, ты показываешь не начало списка ошибок. Ошибки надо исправлять в порядке появления и запускать компилятор заново после исправления.
2) Класс и его экземпляр - разные вещи.
>>394298
Во время защиты закроешь экран ноутбука и спросишь его, может ли он пользоваться программой. Есл++++и не может - то визуальный.
99,99999% программ имеют визуальный интерфейс (инбифо Брааль, звуковое меню и т.д.). Если твои преподы имели ввиду графический, как ты думаешь, кто выиграет? Псевдографический интерфейс - название того, что ты сделал.
>>394529
Есть вероятность того, что в стандарт втащат ещё больше полезных фич (хотя бы модули), и плюсы будут намного лучше.
>>394540
Потому что парк софта намного больше. Нужно писать больше червей только ради того, чтобы получить в 50 раз меньше заражений. Олсо, дырок в опенсоусном софте меньше и патчатся они быстрее.
>>394863
char не хранит utf-8 символы (кроме ASCII). Символ в таких случаях - это строка длиной от 1 до 4 байт, и сравнивать надо, как строку.
>>395547
Комментирую:
2:51 https://en.cppreference.com/w/cpp/io/basic_istream/readsome
3:40 нахера ему .c_str()?
3:53 функция для получения массива байт из файлы занимает одну строку, а ещё есть memory mapped file почти во всех ОС, и он есть в Бусте. Код на экране считывает не любой файл.
>>395785
Не совсем правда. На закрытых платформах может быть Жаба, но не нативный код.
>>395810
Это норма, но исправимая. На цппреференсе есть файлы справки для разных IDE.
>>395829
Функция принимает в том числе EOF.
https://en.cppreference.com/w/c/string/byte/toupper
и вернёт она EOF в таком случае. Компилятор ругается на неявное сужение? Щито поделать. Можешь касты писать, ругаться не будет. Можешь именно такие предупреждения отключить.
83 1396931
>>393953
Clang address sanitizer. Больше никак. Ещё можешь создавать вектор вместо массива и передавать ссылку на вектор вместо указателя.
>>394033
1) Скорее всего, ты показываешь не начало списка ошибок. Ошибки надо исправлять в порядке появления и запускать компилятор заново после исправления.
2) Класс и его экземпляр - разные вещи.
>>394298
Во время защиты закроешь экран ноутбука и спросишь его, может ли он пользоваться программой. Есл++++и не может - то визуальный.
99,99999% программ имеют визуальный интерфейс (инбифо Брааль, звуковое меню и т.д.). Если твои преподы имели ввиду графический, как ты думаешь, кто выиграет? Псевдографический интерфейс - название того, что ты сделал.
>>394529
Есть вероятность того, что в стандарт втащат ещё больше полезных фич (хотя бы модули), и плюсы будут намного лучше.
>>394540
Потому что парк софта намного больше. Нужно писать больше червей только ради того, чтобы получить в 50 раз меньше заражений. Олсо, дырок в опенсоусном софте меньше и патчатся они быстрее.
>>394863
char не хранит utf-8 символы (кроме ASCII). Символ в таких случаях - это строка длиной от 1 до 4 байт, и сравнивать надо, как строку.
>>395547
Комментирую:
2:51 https://en.cppreference.com/w/cpp/io/basic_istream/readsome
3:40 нахера ему .c_str()?
3:53 функция для получения массива байт из файлы занимает одну строку, а ещё есть memory mapped file почти во всех ОС, и он есть в Бусте. Код на экране считывает не любой файл.
>>395785
Не совсем правда. На закрытых платформах может быть Жаба, но не нативный код.
>>395810
Это норма, но исправимая. На цппреференсе есть файлы справки для разных IDE.
>>395829
Функция принимает в том числе EOF.
https://en.cppreference.com/w/c/string/byte/toupper
и вернёт она EOF в таком случае. Компилятор ругается на неявное сужение? Щито поделать. Можешь касты писать, ругаться не будет. Можешь именно такие предупреждения отключить.
84 1396934
>>396931
>>395547
Олсо, лень вообще смотреть на страничку логстэша, но я так понимаю, что универсальный инструмент заменили узконаправленным.
85 1396950
>>394298
CLI - command line interface.
У тебя же полноценный интерфейс, просто он выполнен ин из псевдографики.

А вот если бы ты передавал все через аргументы запуска то это был бы CLI.
15572211943620.jpg210 Кб, 953x893
86 1396974
Ребята, что обычно используется в C++, чтобы Гуишечки-окна делать, как в Вижуал Студио?

Есть что-то своё встроенное, чтобы не тащить сторонние фреймворки вроде QT.
87 1396983
>>396974

>Есть что-то своё встроенное


Нет. В плюсах вообще есть что-то встроенное, что отвечает современным запросам общества? Используй QT, это единственный нормальный фреймворк для рендеринга красивых интерфейсов на Linux.
88 1397013
Посоны, а как вы пишите большие проекты, как приступаете к ним? Тут надо для курсача написать что-то на 10+к строк, а конь не валялся.
89 1397015
>>397013
За деньги, попробуй, базарю понравится
90 1397021
>>397015

>кресты


>деньги

91 1397025
Ньюфаг ИТТ. Не гоните ссаными тряпками. Решил начать с учебника Липпмана, который рекомендуют в шапке. Дошёл до классов, точнее, использования готовых классов. Скачал файлы, которые дополнение к учебнику. Что делать теперь? На первом скрине архив с дополнениями к учебнику и созданнный в Visual Studio 2010 проект под названием Classes. Скопировать эти файлы в папку проекта? Уже пробовал, нихуя не работает. Копировать все файлы, или только Sales_item.h, как в учебнике написано?
92 1397039
>>397025
Покажи содержимое батника. Если нам повезет, окажется, что он сам все соберет при запуске и без VS.
Энивей, тебе нужно разбить файлы на проекты в VS так, чтобы у тебя на каждый проект была ровно одна функция main. Все проекты при этом могут быть в рамках одного солюшена. Погугли как пользоваться VS.
Но лучше бы ты выложил содержимое файлов куда-нибудь, чтобы мы не гадали, как там все организовано, если ждешь от нас помощи.
93 1397040
>>397025
И ещё покажи readme
94 1397044
>>397015
Где бы только найти человека, который готов таким заняться. Мимо другой анон, который ищет чела, который за деньги напишет прогу для курсача
image.png246 Кб, 1366x768
95 1397049
Это снова я. Перетащил все файлы из папки дополнения к учебнику (в архиве) в папку проекта. Нажал добавить файл Sales_item.h. Запустил построение. Ошибка на пике: fatal error C1083: Не удается открыть файл включение: Version_test.h: No such file or directory.
Что ещё за файл ему нужен? Нихера не понятно, откуда его брать. Как дохуя файлов в проекте. Видимо, программирование не для меня.
96 1397050
>>397025
Обычно это делается так: ты добавляешь .h и .cpp-файлы в список файлов в IDE. Что происходит дальше: при нажатии кнопки "собрать" IDE компилирует .cpp-файлы и линкует объектные файлы. Типа такого:
gcc -o a.o a.cpp
gcc -o b.o b.cpp
gcc a.o b.o
На третьей строчке получается запускаемый экзешник. Если в b.cpp используется класс (или что угодно другое) определённое в a.cpp, то в b.cpp должен быть включён соответствующий a.h , созданный автором a.cpp .
Липмана не читал.
Аноним 97 1397051
>>397044
Могу я попробовать.
image.png199 Кб, 1366x768
99 1397055
100 1397061
Пиздец, живу в ебенях, вышка за несколько км, мотив с трудом выдаёт мегабит. Ещё и некроноут лагает 2Гб оперативы. Мамка орёт из-за того, что за компом сижу. Брат младший пиздит не умолкая. В голове каша, запутался во всех этих файлах. Видимо придётся оставить затею изучить плюсы. Лучше дворником.
101 1397073
>>397061
Найди этот ебучий Version_tests.h и добавь его в солюшен, как и все остальное. Если его нет в папке, значит он лежит где-то в другой секции дополнений к книге. Или попробуй удалить его из кода. А вообще, я думаю, тебе сначала стоит изучить, как вообще работает компиляция и линковка в С-языках. Про операционные системы почитать и все такое. Либо вкатывайся в веб и интерпретируемые языки, туда порог вхождения ниже и платят больше.
102 1397084
>>397073

>тебе сначала стоит изучить, как вообще работает компиляция и линковка в С-языках. Про операционные системы почитать и все такое


Какую литературу посоветуешь?
image.png137 Кб, 1366x768
103 1397096
>>397073
Спасибо огромное, анон. Нашёл ебучий Version_tests.h. Он был в корневом каталоге архива. Буду впредь внимательнее, чтобы не доёбывать сеньоров 300ккк/нсек такой ерундой.
104 1397097
>>397025
>>397054
У тебя в пункте 1.20 написано прямо, что тебе надо сделать.
105 1397107
>>397051
Кинь телегу
Аноним 106 1397109
>>397107
На почту напиши, там спишемся.
107 1397136
>>396931

> Это норма, но исправимая. На цппреференсе есть файлы справки для разных IDE.


А где? Я что-то не могу найти, только архив с оффлайн версией сайта нашёл.
108 1397139
>>397049
Что за говнище на скриншоте? Ты ебанутый? Скачивать visual studio 2019
109 1397150
>>397136
Про "разные IDE" я переборщил.
https://en.cppreference.com/w/Cppreference:Archives
Есть для QtCreator в том числе.
110 1397215
>>397025
Могу тебе сказать, что вот это вот упражнение - это практически единственное место на всю книгу у него, где его исходники нужно включать к себе в проект.

Дальше достаточно руками набивать то, что в книге пишут. В исходники только заглядывать в особо мутных случаях.
изображение.png9 Кб, 634x219
111 1397216
Почему я не могу сделать вот так?
Если указать например int вместо Т то оно работает.
112 1397221
>>397215
Ну тогда всё нормально. Код в книге достаточно хорошо разжёван, чтобы не вызывать трудностей. Но я понял, что помимо изучения языка надо научиться работать со средой разработки, понимать структуру проекта, почитать про линковку и компиляцию.
113 1397225
сап, киньте линк, или подскажите как гуглить написание графического интефрейса в qt без использования встроенного дизайнера, тоесть просто руками написать окно, которое вывело бы электрическую цепь, и при вводе данных и нажатии на кнопку, вывело бы решение, если не смогу подключить LaTex, тогда просто текстом.
114 1397230
>>396983
А как насчёт 2D/3D графики? На чём обычно сейчас графику в плюсиках делают?
115 1397231
>>397230
VULKAN
U
L
K
A
N
116 1397233
>>397231

>VULKAN


Это API для новых игровых видеокарт (управление железякой), а не фреймворк для рисования графики (набор готовых библиотек, из которых ты складываешь, как из кирпичей графику).
117 1397234
118 1397236
>>397231
KАSINO
A
S
I
N
O
119 1397239
>>397230
БАМП
120 1397280
Если ты:
>>397233
и это тоже написал:
>>396983

тогда и этому посту:
>>396974
БАМП!
121 1397288
>>397230
зависит от задачи. 2d - Qt, SDL, SFML.
3d - дохуя разных движков.
122 1397304
>>397288
встроенное что есть, ничего?
123 1397310
>>397216
Ну неужели никто не знает?
124 1397316
>>397288
sdl и sfml - это движки для игр, на которых можно и GUI делать, а qt - просто библиотека для GUI, приложения шлёпать.
Не окажется у тебя поддержки у железа этих sdl и sfml, типа опенжл там какой-нибудь и ещё что-то, и всё пц, никто твоих гуишечек уже не запустит, qt - другое дело.

Я помню, разбирался и пришёл к выводу, что SFML как бы вообще не нужен, сразу учишь и используешь SDL и всё и SDL вообще топ и лучшее, что есть.
После него идут уже полноценные игровые движки с полными наборами со специальными IDE для игроделания итд.

Короче, если ты делаешь не игру, а просто графику некоторую небольшую, то лучше брать SDL.

Но я читал, что компании-игроделки пользуют не SDL для менюшечек.
125 1397319
>>397316

> Но я читал, что компании-игроделки пользуют не SDL для менюшечек.


Они используют ue4.
126 1397325
>>397319
нет речь не про полноценные игровые движки, а про эти наборы библиотек.
128 1397340
>>397328
а для графики?
15572211943620.jpg210 Кб, 953x893
129 1397341
Кстати, как задействовать видеокарту для увеличения быстродействия программ вообще?

И есть ли автоматика, которая сама разберётся, что лучше на видяхе обрабатывать, а что на ЦП?
изображение.png5 Кб, 500x116
130 1397354
>>397310
Тебе надо явно обозначить с помощью typename, что ты вектору в <> передаешь именно тип до момента создания экземпляра неизвестно, что у тебя там - тип или что-то другое.
image.png1,2 Мб, 849x931
131 1397388
>>395547

>С++ пишет всего несколько человек


На пиках "несколько" человек?
132 1397435
В консоли Эклипса пиздец вместо русского, как починить, не меняя кодировку Воркспейса?
133 1397558
>>395547
>>397388
Он жн говорит что очень давно писало 20 человек, а сейчас 180, так что на пиках наверное даже ещё не все.
134 1397615
>>395547
Я то по наивности думал что плюсы это переусложненная параша которую уже ни один человек не способен понять в принципе, а оказывается еще больше людей надо чтобы еще больше говна натащили, ну ОК.
135 1397627
>>397341
бамп, пмгите
136 1397654
>>397615
Реально не понимаю, почему кресты считают переусложненными. Они сложные, когда вы хотите сделать что-то реально сложное, например написать БД, какой-нибудь серьезный инструмент типа фотошопа или бекпропагатор. В тех задачах, для которых обычно используют питон или джаву, то есть круд написать или веб-сервис простенький, они просто будут чуть более вербозными.
137 1397687
>>397654
Поддерживаемость
Переносимость
Расширяемость
Тут кресты заметно сосут и у жабы и у питона
138 1397695
Побеждал кто-нибудь не работающий дебаггер на map и set в clion?
139 1397708
>>397687
А поподробнее можно?
140 1397728
>>397708

>Поддерживаемость


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

>Переносимость


Необходимость компилировать код под каждую платформу.
141 1397736
>>397615
Быдлокодить на плюсах не сложнее чем на питоне
Разрабатывать что-либо - абсолютно другой экспириенс
142 1397747
>>397654
Они наплодили очень много лишних сущностей и правил чтобы легаси говно работало. А сложность по определению как раз напрямую зависит от количества сущностей.
Вприницпе, писать можно и не зная абсолютно всего, это так. Но вот верно говорят - в С++ ты платишь только за то что используешь. Но не только производительностью, а ещё и своей ногой, потому что будешь постоянно отстреливать её, натыкаясь на очередные хитрые правила и новый смысл каких-то известных тебе понятий, когда они в другом контексте используются. Поэтому с++ это единственный известный мне язык, который реально не так уж просто изучить, это потребует заметное количество усилий и времени.
143 1397754
>>397747
Да нет, даже не идеальный с++ код довольно быстр и неплох
144 1397756
>>397728
Я все еще жду чего нибудь конкретного, потому что это вообще какое то совсем беспредметное ко-ко-ко-кукареку

>Кресты невозможно читать и писать.


Да ты шо
145 1397758
>>397695
Вижуал студия, например
146 1397761
>>397754
Да это само собой, я об этом и говорю - можно действительно писать код имея лишь самые базовые знания с++. И с точки зрения производительности никоим образом плохим не будет.
Но если так уходить в крайность - то итоге писать ты будешь писать на С++ как на Си. Поэтому если уж решил писать на С++ - видимо тебе надо использовать какие-то возможности С++, которых в Си нет, чтобы сам процесс написания кода стал быстрее, в этом его и предназначение как бы. Если ты С++ наизусть знаешь то это не проблема, а вот если нет - тогда ты гарантированно стабильно будешь натыкаться на какую-то очередную тонкость, о которой раньше ты не знал. И иногда тебе ещё придётся охуесть чтобы выяснить что это такая за тонкость и где аконкретно и что не так в твоем коде.
В других языках программирования такого намного меньше.
147 1397779

>I thought ‘I wonder what would happen, if there were a language so complicated, so difficult to learn, that nobody would ever be able to swamp the market with programmers?'

148 1397781
>>392196 (OP)
из шапки

>Роберт Седжвик Фундаментальные алгоритмы на C++ 2001


>Стандартный курс алгоритмов с примерами на C++. Для его чтения не нужно знать мертвые языки, в отличие от этого вашего Кнута



Есть смысл читать это в 2019? Или лучше взять си-версию?
149 1397789
>>397225
Куча примеров вместе с Qt ставится (папка examples), они там почти все без формочек, только плюсами написаны.
>>397341
Если вкратце, то гугли OpenCL. Написать в коде "вот это сделай на ГПУ" невозможно.
>>397728

>Необходимость компилировать код под каждую платформу.


Это не переносимость.
>>397756
например:
- необходима пересборка после изменения layout класса, никакой ошибки не будет, просто программа будет падать
- cin по-умолчанию текстовый (важно для винды и макоси)
- cin привязан к stdin, из-за чего ввод медленный
- различия между vector<int>(5) и vector<int>{5}
- cout<<int8_t(5) выведет не число 5 с большой вероятностью
- setprecision принимает отнюдь не любое число
- ссылку на локальную переменную люди возвращают иногда, так как считают, что раз const T& huy=T{};продлевает жизнь временного значения, то и при возврате из функции будет то же самое. Я даже на стаке видел опытного человека, который так считал.
- статические переменные в шаблонах делаются на каждый инстанс
- локальные интегральные переменные могут не инициализироваться, глобальные инициализируются всегда
- циклы при использовании shared_ptr. В языке нет инструмента для проверки отсутствия циклов
- функция, не возвращающая значение, которое она должна вернуть, верна. Ты его случайно не вернул и используешь, а там мусор.

Многие проблемы можно решить настройкой предупреждения и Werror, но не все.
150 1397791
>>397789

>Куча примеров вместе с Qt ставится (папка examples), они там почти все без формочек, только плюсами написаны.


Ну и примеры эти документированы, на сайте и прямо в QtCreator.
151 1397792
>>397781
Кормена лучше возьми.
152 1397811
>>397758
Вижуал студия даёт на клыка моей Макоси. Неужели тут никто с яблоками не дрюкает кресты?
153 1397819
>>392196 (OP)
Почему синтаксис плюсов похож на лютою криптографическую срань? почему никто ничего с этим не делает? и как хоть кто-то то понимает?
154 1397823
>>397819
Единственная криптографическая срань в плюсах - это типы. Мой любимый - функция, возвращающая указатель на массив. Что ещё кроме них?
155 1397877
>>397811
Кресты - язык для свитерков и прочих любителей подвигать байтами. Как думаешь, кто из них пишет на маке или под мак?
15572211943620.jpg210 Кб, 953x893
156 1398028
>>397789

>Если вкратце, то гугли OpenCL. Написать в коде "вот это сделай на ГПУ" невозможно.



Пиздос, как это невозможно?
157 1398076
Как правильно сложить почленно два 2d вектора? Пока вижу только возможность с двумя циклами.
158 1398077
>>398076
Зачем там два цикла?
160 1398086
>>398077
по строкам и по столбцам, лол

>>398080
не очень понимаю как применить tranform к вектору из векторов, но спасибо за наводку
161 1398087
>>398086
наверное можно передавать в трансформ лямбду а внутри лямбды уже обычный тронсформ с плюсом я лучший программист в мире.
162 1398090
>>398086
Я почему-то подумал, что два 1d вектора, заглючило. Два цикла как по мне норм решение.
163 1398092
>>397728

>>Переносимость


>Необходимость компилировать код под каждую платформу.


Так это наоборот переносимость как раз и есть.
ну первый кукарек вроде раскрыли более менее, а

>Расширяемость


куда то проебалась, что это такое?
164 1398133
>>397388
На пиках все кто участвует в конференциях, а именно КОД крестов пишет по 1 человеку под каждую ось, ядро тоже написано одним человеком.
165 1398140
>>397388
А где страуструп?
166 1398144
>>397789
Какой сраный ОпенСЛ там, поехавший?
CUDA же!
346-3462456pls-be-patient-please-have-patience-i-have.png102 Кб, 820x514
167 1398169
>>398028
>>397341

> когда лезешь в фф-тред, чтобы проверить таймштамп пикчи, и он совпадает

168 1398201
>>392196 (OP)
Если я перейду с std::thread и std::mutex на нативные линуксовые либы, быстрее будет работать? Насколько?
169 1398202
Помогите найти:

C++ для чайников. 7-е издание. Дэвис С. на русском на халяву, полную книгу.
170 1398205
Деление с остатком:
-9 % -13
-9 = 1 x (-13) + 4

Откуда мы вязли, что там 1 должен быть?
172 1398212
>>398210
Частное округляется до большего.
В твоём примере:
ceil( (-9) / (-13) ) = ceil(0.69230769230769230769230769230769) = 1
( ( -9 ) - ( 1 × (-13) ) ) = (-9) - (-13) = (-9) + 13 = 13 - 9 = 4 - остаток.
>>398210
Из примера 4:
ceil( (-15) / (-7) ) = ceil(2.1428571428571428571428571428571) = 3
( ( -15 ) - ( 3 × (-7) ) ) = (-15) - (-21) = (-15) + 21 = 21 - 15 = 6 - остаток.
173 1398218
>>398144
В сраку себе свои вендор-локи засунь.
>>398201
Если вкратце, то нет. Для плюсов под каждую ось пишется либа (libstdc++ или как оно там в линуксах) и там используются нативные либы.
>>398205
Мы это не брали.
https://ideone.com/LUHKo0
Олсо http://eel.is/c++draft/expr.mul#:operator,remainder
174 1398262
Сап.Как сделать так,чтобы фишки нард могли перемещаться только в определённые места("лунки" или как их там обозвать)?VCL; фишки и поле-image
Не обоссывайте,я сильно ньюфаг
175 1398269
>>398201
libc++ реализует лок мьютекса просто через посиксовый мьютекс:
https://android.googlesource.com/platform/ndk/+/5de42e6621b3d0131472c3f8838b7f0ccf3e8963/sources/cxx-stl/llvm-libc++/libcxx/src/mutex.cpp#27
Так что выигрыша не будет никакого (только если ты не считаешь прямой вызов одной функции чем-то серьёзным).
На винде я помню была давно какая-то лажа, что простой CRITICAL_SECTION работал раза в 2-3 быстрее std::mutex. Сейчас исправили вроде.
176 1398323
>>398262
Когда фишка отпускается чекай ее позицию. Если она раядом какой-то лункой то перемещей ее в лунку, если нет то возращай в исходное положение.
177 1398333
>>398218
Ты идиот?
Максимальная производительность на CUDA, а не на левых дерьмовых да ещё и мусороопенсорсных либах, придура.
178 1398342
>>398333
Ну это смотря что у тебя в приоритете. Если это числодробилка, которую ты будешь запускать на своем вполне определенном железе (или даже покупать железо специально под нее), то CUDA лучше, ибо быстрее на несколько десятков процентов. А если ты хочешь ускорить распространяемый тобой софт, то OpenCL, вероятно, лучше, ибо вычисления на GPU все равно не будут боттлнеком, а ебли с настройкой под разные платформы будет меньше.
179 1398350
>>393199

>don't use exceptions


Сразу нахуй. Исключения это лучшее из всего, что есть в C++ поверх C, даже важнее шаблонов, наверное. Копипаст без шаблонов еще можно как-то читать, но когда в коде начинается возврат ошибок с проверкой на каждом уровне, то это полный пиздец. По сути, сишники переизобретают весь механизм распространения исключений, только отображаемый вперемешку с пользовательским кодом и потенциально забагованный.
180 1398368
>>398323
Спасибо
181 1398374
>>398323
А откуда выковыривать координаты?
182 1398400
Сап. Зачем нужен switch? Вернее. В чем его преимущество перед if? Я, конечно, нуфаг, но не могу придумать ситуаций, где if был бы менее лаконичным и удобным.
183 1398409
>>398400
Явное указание замысла. Видя свитч ты сразу понимаешь что у тебя есть одно выражение, по результату которого выполняется действие. Тогда как с простыней ифов тебе нужно проверить условие каждого ифа, чтобы убедится что это действительно так. Ну и годные компиляторы могут оптимизировать свитчи (строить на его основе branch table, будет выполняться меньше сравнений чем при использовании ифов), но это такое. Главное преимущество в том что сразу видно то происходит. Явное лучше неявного, все дела.
Есть еще разная хуйня типа устройства Даффа которую на ифах сложно постоить, но не стоит вскрывать эту тему
184 1398617
>>392196 (OP)
помогите пожалуйста разобраться в теме сокетов.
Допустим у меня есть одна программа(п1), которая делает обработку информации. И есть вторая программа(п2), которая должна получать из этой первой программы эту информацию. Их нужно соединить к помощью сокетов, где п1 это сервер, а п2 это клиент.
Мне нужно соединить эти две программы. Для сервера я нашёл следующий код
https://gist.github.com/codehoose/020c6213f481aee76ea9b096acaddfaf#file-bbtcpserver-cpp

и немного его преобразовал, всё создание сервера обернул в функцию и запустил эту функцию в std::thread в main первой
программы, а для клиента я использую qtcpsocket.
В первой программе информация может поменяться, но как в этом случае сообщить об этом второй программе?
То есть наверное нужно создать в первой программе класс-обертку для сервера, который работал бы асинхронно с остальной логикой программы? Подскажите пожалуйста, может быть есть пример такого класса для сервера?
185 1398652
>>398617

> рмация может поменяться, но как в этом случае сообщить об этом второй прог


Не обрываешь соединение после связи. Тоесть клиент коннектится и потом сидит и слушает. Сервак отсылает новую инфу когда она появляется.
186 1398667
>>398652
вот мой код для сервера
https://pastebin.com/rzRDCjCB
я не понимаю, как мне в случае изменения данных на сервере переслать на клиент новую информацию, если мой сервер работает в отдельной функции в отдельном треде? как мне попасть в while (true) serverFunction()?
187 1398687
>>398667
Ты туда не попадаешь. Создаешь очередь сообщений для пользователей. Когда твой сервер обновляет данные то он формирует сообщение для пользователя с обновленными данными и помещает его в очередь. Дальше у тебя есть джва варианта. Простой и неправильный это внутри while (true) ты на каждом цикле чекаешь эту очередь. Если она не пустая, то вытаскиваешь и отправляешь сообщение. Правильный это тоже самое, только если очередь пустая то ты засыпаешь тред с помощью std::condition_variable (вызываешь std::condition_variable::wait() в треде), а когда в очередь добавляют новое сообщение то будишь с помощью std::condition_variable::notify_one() в той функции что обновляет очередь. По необходимости обмызываешся локами (мьютексами). Асло сокет должен быть неблокирующим, иначе у тебя синхронный сервер. И обрабатывай результат recv, обрывай коннект на ошибках.
188 1398719
>>398687

>очередь сообщений для пользователей


то есть std::queue?

> Простой и неправильный это внутри while (true) ты на каждом цикле чекаешь эту очередь


Почему такое решение будет неправильным?

>ты засыпаешь тред с помощью std::condition_variable (вызываешь std::condition_variable::wait() в треде), а когда в очередь добавляют новое сообщение то будишь с помощью std::condition_variable::notify_one() в той функции что обновляет очередь


я не совсем понимаю, что тут происходит. while (true) всё равно остаётся? std::condition_variable::wait() вызывается в serverFunction()?
189 1398729
>>398719

>Почему такое решение будет неправильным?


Это будет так называемый busy waiting. В большинстве случаев он неэффективен и заставляет напрасно крутиться процессор, пока он мог быть занят другими полезными вещами.
condition_variable позволит треду заблокироваться, пока в очередь действительно что-то не придёт.
Мимопроходил
190 1398740
>>398719

> Почему такое решение будет неправильным?


Потому что у тебя тред будет постоянно крутиться отжирая ресурсы. Конечно если туда добавить задержек (например усыплять тред на миллисекунду на каждой итерации, или добавить таймаут в recv, если это возможно) то затраты будут небольшими но все равно это не красиво.

> std::condition_variable::wait() вызывается в serverFunction()?


Да. При этом тред уснет пока ты его не разбудишь при обновлении данных (вызовом notify_one()).
191 1398769
>>398740

> При этом тред уснет


это значит что сервер не будет работать? То есть к серверу нельзя будет подключиться в это время?
вот код, который используется в функции в отдельном треде
https://gist.github.com/codehoose/020c6213f481aee76ea9b096acaddfaf
в каком месте нужно добавить std::condition_variable::wait()?
192 1398777
>>398769

> в каком месте нужно добавить std::condition_variable::wait()?


Там где ты провенряешь очередь сообщений и замечаешь что она пуста.
193 1398798
>>398342
Слушай, зеро, твой OpenCL - в сравнении с CUDA в плане производительности, это как Java сравнить с С.

"Зато кратковременность." Ооо...

ОпенСЛ уже в 2-5 с лишним раза медленней работает на новых видеокартах, а дальше ситуация всё больше улучшается в сторону CUDA.

https://devtalk.nvidia.com/default/topic/1029272/significant-speed-gap-between-cuda-and-opencl-how-to-debug-/
194 1398883
>>398798
Nvidia душит OpenCL, чтобы производителей был фактически выбор
1. Писать только под CUDA и лочиться на нвидивские карточки
2. Писать и под CUDA и под OpenCL, чтобы владельцы нвидии использовали CUDA, а владельцы амуде и интел использовали OpenCL.
Естественно первый вариант проще с точки зрения разраба и обещает много денег nvidia.
195 1398884
>>398798
Наверное потому что Нвидиа специально гимпит реализацию OpenCL, чтобы все переходили на куду? Какую последнюю версию поддерживает Nvidia? 1.2, или за последние годы что-то поменялось?
196 1399126
Вот знаю я С++, ну и что? Куда мне развиваться-то теперь? Плюсы люблю, освоил их так сказать, инструментом владею. А прикладывать его куда? Какие есть специализации у крестовиков?
197 1399133
>>399126
Можешь лепить сайты.
198 1399135
>>399133
На плюсах сайты не лепят.
199 1399137
>>399133
Ну серьёзно, что мне качать дальше? Какую ветку?
200 1399211
>>399137
Открывай hh и смотри что в понравившихся вакансиях требуют.
201 1399248
>>399126

>Вот знаю я С++


Уверен в этом? Стандарты 11/14/17 на зубок отскакивают? Пишешь современный код?
202 1399262
>>399126
Ты опоздал лет на 10, сейчас балом правят языки мобилок и веба: джава (и все остальное на jvm), джаваскрипт, питон, го.
15575670727710.gif615 Кб, 376x488
203 1399263
>>399211

>что в понравившихся вакансиях требуют


опыт работы
204 1399301
>>398400
конечные автоматы удобно делать (кто ими занимается) Просто блять переходишь в нужное состояние. Логично и естественно. Мне в питуховене этого не хватает. Если вася сосет хуй, то он пидор.
205 1399316
>>399301
В пистоне есть

{ pidor: sosat_hui,
coder: sosat_jopu }[vasya]()

И это нормальная практика
206 1399383
>>399301
Прочитал сначала "конченые автоматы"
изображение.png2 Кб, 362x117
207 1399431
Ребятки, а как мне передать в функцию файл по имени переменной?
208 1399461
>>399316
Змеедавы пропагандируют, мол, для всего должен быть единственный явный способ, а сами создают КОНТЕЙНЕР с одноразовым содержимым для ветвления, лол. Это костыль уровня Duff's device, только без ускорения.
209 1399463
>>399431

> func без прототипа


Телепат компилируется, ожидайте.
210 1399471
Ну что, осилил я с большего learncpp, можно считать, что я знаю кор? Куда теперь-то?
211 1399499
>>399471

>Куда теперь-то?


Нахуй >>1390481 (OP)
212 1399642
>>398884
Давайте в суд на них подадидим.
213 1399671
>>399431
по ссылке, стримы нельзя копировать
214 1399695
>>399431
void functsiya(vhfpotok& vvod, vyhfpotok& vyvod);

int glavnaya()
{
vhfpotok vvod("vvod.dvoichny, ios::dvoichny);
vyhfpotok vyvod("vyvod.dvoichny, ios::dvoichny);
functsiya(vvod, vyvod);
}
215 1400091
>>398374
Из носа выковыривай.
>>399135
Кто-то запрещает?
216 1400132
>>399248
Уверен, отскакивают, пишу, а толку.
>>399262
Не ну есть же там всякие эмбеддед, гейдев, микроконтроллеры.
217 1400135
>>400132
Например точно знаю, что мозга для мерседесов на плюсах(как раз современных) пишутся. Ну так че, дорог так много, а я один, надо что-то одно выбрать и прокачивать, спецом становиться, бабки получать, толку от моих знаний крестов одних без знания области применения?
изображение.png17 Кб, 609x388
218 1400155
Плюсы, накидайте за щчёку книг по Windows Forms. Очень сильно хочу освоить эту хуню, на сколько там сложно делать анимации ?
219 1400874
Плюсаны, подскажите, в каких случаях полезно юзать throw без параметров в блоке catch()?
Читал об этом, что из-за этого исключение не обрабатывается до конца и идет выше по стеку до другого исключения, т.е. в случаях, когда есть несколько исключений и мы конкретно не знаем, какое поймали?
220 1400929
>>400874
Например, если ты освобождаешь ресурсы, которые выделились в try-блоке и не завернуты в объект с деструктором. Или если ты только часть обработки делаешь, например, фиксишь обосравшиеся локальные объекты, а потом исключение уходит в глобальный обработчик ошибок, который ничего не исправляет, но зато подробно запишет все в лог.
221 1400937
>>400874
throw без параметров либо пробрасывает дальше текущее исключение либо делает терминате, если текущего нет.
222 1401030
>>400929
>>400937
Спасибо
cpuusage.png78 Кб, 1202x548
223 1401120
Помогите плз. Я ещё только в процессе освоения C++. Не бейте сильно. Я написал своё первое оконное приложение. Ничего особенного - только дефолтное окошко из учебника для начинающих. Никаких полезных вычислений там нет. Просто голое окошко. Я не нонимаю, почему у моего приложения такое высокое потребление ЦП (как это видно в Process Explorer)? Я в шоке. Даже Хром со всеми своими вкладками столько не потребляет. Как так? Как, вообще, можно повлиять на потребление ЦП?
224 1401163
>>401120
а код где покажешь? телепатически декомпилировать программу по скриншоту?
proxy.duckduckgo.com.jpeg65 Кб, 550x412
225 1401167
>>401120
https://stackoverflow.com/questions/2363206/windows-game-loop-50-cpu-on-dual-core
Classic busy/wait loop. Your CPU is busily checking (and rechecking ad infinitum) for messages. You need to wait for messages in a blocking way or, more likely, use a timer that periodically wakes up your game thread so it can do its work. The game thread would then go away until the next time it is woken up.
226 1401180
>>401163
Не знаю даже, что показывать. Обычное окно.
Делаю как написано в этом руководстве:
https://docs.microsoft.com/en-us/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp?view=vs-2019
Читаю также этот учебник:
http://booksdescr.org/item/index.php?md5=CC408CAF8E4FA2FC4FA9A842574AE256
227 1401183
>>401180
If there's anything I would change, it's to use GetMessage instead of PeakMessage for the message pump. This will potentially improve performance and keep the CPU utilization down. There's a demo project that uses this approach in this forum post. The post is old, but the concept of message pump is still the same.

ванга
228 1401312
бля, я только что перекат из 86-го запилил, а тут уже оказывается
229 1401422
Че там с концептами, крестухи? К 23 году завезут?
230 1401511
>>401167
Какой-то сборник офигительных советов. У меня, ведь, просто окно. Мне не нужен максимально производительный рендер.
Как сделать "wait for messages in a blocking way"?

>>401183
А делать-то мне что? Как снизить потребление ЦП?
Я попробовал переделать цикл обработки сообщений с использованием PeakMessage. Не помогло.
231 1401518
>>401511
Написано же усыпляй по таймеру. Запоминаешь время. Формируешь кадр. Смотришь сколько времени прошло (с момента запоминания) - вычитаешь из 16 миллисекунд (и сколько тебе там фпс надо) и засыпаешь на это время. Когда просыпаешся отрисовываешь подготовленный кадр и начинаешь все заново (с запоминания времени). На самом деле там ебенячая куча подводных камней (с тем чтобы синхронизировать просчет кадра и отрисовку), но пока можно не трогать. А вообще тебе должна помочь простая задержка на 1 миллисекунду на каждой итерации твоего цикла, это если ты не хочешь изъебываться.
"wait for messages in a blocking way" означает что у тебя есть какая-то очерель в которую помещаются сообщения, а тред который их обрабатывает не крутится постоянно, а в случае если очередь пуста засыпает. А когда там появляются сообщения то просыпается и обрабатывает. Можно сделать с помощью std::condition_variable.
232 1401521
>>401518

>Формируешь кадр


Какой кадр? У меня клиентская область пустая. Потом, может, добавлю каких-нибудь WinAPI-control'ов.
233 1401526
Как же не хочется возиться с STL. Вот в анрил енжине есть своя удобная стандартная библиотека с разными структурами данных. Может есть ещё какой-нибудь заменитель стандартной библиотеке?
234 1401528
>>401518

>усыпляй по таймеру


Это считается хорошей практикой? Усыплять главный тред окна? Он, ведь, обрабатывает асинхронные (nonqueued) сообщения.
235 1401540
>>401526
Просто перекатывайся в заменитель C++.
236 1401544
>>401528
Когда треду нечего делать то он должен усыпать и давать возможность спокойно работать тем кому есть что делать. Понятно что таймер это для предсказуемых вариантов (тебе каждые 16 миллисекунд нужно обновлять инфу). Если нужно резко реагировать на сообщения то там используют какие-то прерывания или подобные технологии чтобы будить тред.
237 1401545
>>401540
А вот с этого места поподробнее.
238 1401548
Есть расчетная программа вида куча данных -> вывод табличкой, которая нужна в удаленном месте. В данный момент работает все через repl.it и оче неудобно. Как минимальными усилиями запилить подобие интерфейса, чтобы запускать с телефона?
239 1401609
У C нет нормального ООП?
А без него не сделать большой проект в одиночку?
240 1401682
>>401422
Приняли в 20 стандарте вместе с корутинами, контрактами, модулями и прочими приятными фичами: https://habr.com/ru/company/yandex/blog/438864/
241 1401768
>>401528
В том же кваке первой, если есть мы дедикейтед сервер с таргет тикрейтом:
1) Проходимся по сообщениям винды с помощью PeekMessage
2) Лоигка игры, рендер
3) Если слишком быстро получилось, то спим
https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac8f1dae6a3981954bc9852d/WinQuake/sys_win.c
Стикер512x512
242 1401771
>>401682
Какой же С++ ахуенный становится, к 2025 будет конфеткой. А как там джава развивается?
Стикер512x512
243 1401772
>>401609
С не поддерживает ООП. Смотря что за проект и что ты подразумеваешь под большим.
244 1401776
>>401540
Какой?
Jai (ещё не вышел, может получиться opinionated хренью одного парня, который возомнил себя богом)?
Odin (недоделанная хрень)?
Zig (скорее заменитель Си, но вроде как довольно приятный язык с прикольными фишками которые даже уже работают)?
D (слишком долго мусолили, уже мёртв)?
Rust (решает проблемы, с которыми лично я почти не сталкиваюсь, и поэтому мне он не особо нужен)?
Nim (непонятная смесь всего и вся)?
245 1401803
>>401609

>У C нет нормального ООП?


собственно классы эмулируются посредством структур с полями-данными и с указателем на таблицу (структуру, что-то другое) указателей на функции, которые значит будут выполнять роль методов класса, как то так..
инкапсуляция на уровне единиц трансляции, плюс есть ключевым слово static, плюс есть неполные типы.. вполне себе инкапсуляция..
наследование - сначала при помощи структур и указателей на функции эмулируются интерфейсы, далее соотвественно можно эмулировать и наследование интерфейсов (но не наследование реализации! вместо наследования реализации предпочитается методика агрегирования)
динамический полиморфизм легко реализуется посредством собственных vtable
единственная проблема - это статический полиморфизм, обычно задачи для которых он нужен решаются посредством макросов, что конечно не очень хорошо
image.png379 Кб, 601x451
246 1401896
>>401540

>заменитель C++

247 1401990
У меня два вопроса.
1. Когда я вызываю delete[] откуда ОС знает где кончается массив? Впрочем важно больше не это, а почему я не могу у ос спросить где он кончается, а вместо этого должен какой-нибудь 0 в конец записывать или содержать переменную с числом элементов?

2. Принято писать функции безопасно - что бы ты туда не передал в аргементах - она либо нормально отработает, либо выкинет исключение. Но, для того чтобы выкинуть исклбчение порой делается немало проверок- если одна переменная равна тому-то. Если эта функция вызывается 1000 раз в секунду, то проверок становится в 1000.
Или еще из той же серии - предположим есть какой-то класс ориентированного по осям прямоугольника и ему для задания параметров нужно соответственно знать 4 координаты4 значения. Наверняка у него будет конструктор принимающий их типа Rectangle(const Point &p1, const Point &p2), и внутри него будут очередные проверки с логикой типа if p1.x < p2.x then left = p1.x...
И суть в обоих этих примерах в том, что порой когда мы передаем в какую-то подобнобную функцию аргемнты - мы можем уже тогда знаем в каком виде они там нужны и проверки будут бессмысленными.
Например
Rectangle a ...
Rectangle b(a.TopLeft(), a.BotRight()); - мы уже передаем в нужном виде данные.
Собственно, мне интересно - может ли это заметно повлиять на производительность и если да, то придумали ли что-то для этого?
248 1402011
>>401990

>откуда ОС знает где кончается массив?


Не ОС, а менеджер памяти, он может быть кастомным. Менеджер памяти хранит таблицу соответствия указателей и длин.

>почему я не могу у ос спросить где он кончается


Потому что разные ОС реализуют эту хуйню по-разному или вообще решили, что нинужно. Ты можешь сделать кастомный менеджер памяти, который будет запоминать это дело сам или обращаться к ОС, если знает как, но в язык это не встроено, потому что мало кому надо, а ресурс будет кушать.

>Если эта функция вызывается 1000 раз в секунду, то проверок становится в 1000


Для часто вызываемых функций так делать не надо, проверяй корректность сразу при конструировании/изменении объекта, потом вызывай без проверок. Если объект создается очень часто, то рассмотри возможность не выделять его в отдельный объект, а сделать контейнер, в котором хранить сырые данные и делать массовые операции над ними без проверки.
249 1402025
>>401990

> Когда я вызываю delete[] откуда ОС знает где кончается массив?


Ниоткуда, ОС выделяет память страницами и понятия не имеет о твоих данных. new, delete, malloc, free etc на самом деле обращаются к оптимизирующему менеджеру кучи в malloc.с который и организует отображение твоих адресов на выдаваемые ОС страницы (которые сама ОС может как хочет отображать на физическую память), и где кончается массив знает именно он.
Таким образом аллоцирование/деаллоцирование памяти в общем случае не обязано за собой вести захват/освобождение памяти у ОС.
ЗЫ а примитивный сборщик "мусора" был уже в сях.
250 1402392
Памагите! Меня заело. Как передать указатель на нестатическую функцию-член в качестве аргумента другой функции?
251 1402396
>>402392
Берёшь и передаёшь, в чём проблема? Читал, что компилятор выдаёт?
252 1402415
>>402396
Пишет, что операция невозможна с привязанной функцией-членом.
253 1402456
>>402415
"Pointer to member" это другой тип, его нельзя использовать как "pointer to function". Ты должен явно указывать в типе указателя, какого класса этот метод. Вот подробный гайд https://isocpp.org/wiki/faq/pointers-to-members .
254 1402458
>>402392

> указатель на нестатическую функцию-член


у них особый синтаксис
https://www.codeguru.com/cpp/cpp/article.php/c17401/C-Tutorial-PointertoMember-Function.htm

Проще всего заебенить псевдоним.
255 1402510
>>402392
std::mem_fun
или
std::mem_fn и std::bind
256 1402579
>>402392
А ты уверен, что тебе это вообще нужно?
257 1402652
Насколько я знаю, запутанные иерархии с множественным наследованием обычно не делают, но тем не менее:
Предположим я пишу какую-то библиотеку и я сделал класс Б, который наследуется от класса А, и класс В, которы тоже наследуется от класса А.
Другой человек взял мою библиотеку сделал класс Ц, который наследуется от Б и В. Ему получается никак не сделать чтобы клксс Ц содержал лишь одну копию А. Должен ли я по дефолту всё, от чего в теории могут наследоваться, наследовать виртуально, или если этот человек решил класс Ц сделать - то это он уже сам виноват что хуйню творит?
258 1402664
>>402652
Чтобы такой хуйни не было, нужно все библиотечные классы делать шаблонными, а наследовать через CRTP. Тогда этот хуй сможет декорировать класс А, сделав Авирт, который нихуя не добавляет, а просто наследуется от А виртуально. И потом передать Авирт в Б и В, от которых унаследуется Ц, и все будет заебись.
259 1402807
>>402652

>Ему получается никак не сделать чтобы клксс Ц содержал лишь одну копию А.


Можно, гугли виртуальное наследование.
260 1403011
>>402579
Так, разобрался. Нестатические методы принимают this неявно первым аргументом, т.е. метод с явным одним параметром для компиллятора виден как принимающий 2. Я же пытался его передать туда, где ожидался std::function, принимающий только один. Решил с помощью std::bind, привязав первый параметр к this.
261 1403326
>>402392
&Class::member вроде бы.
262 1403329
>>403326

class Class
{
public:
void member(){}
}
void f(void (Class::ptr) (void), Class a)
{
a->ptr();
}

int main()
{
f(&A::member)();
}
Вот так подробнее.
263 1403506
У меня вопрос не совсем по теме треда, а по алгоритмам, но тем не менее.
Если сделать класс для последовательности, который содержит std::set для элементов и std::vector от итераторов для хранения порядка - это идиотизм или нет? Ах да, нужно также сделать операции вставки одной последовательности в другую и исключения. Получается при операции исключения будет тупа пробегаться вектор итераторов по порядку, также, как и если бы все данные просто хранились в массиве, да ещё и придётся дополнительные действия над сетом совершать. Разве что можно операцией поиска сразу проверить есть ли нужные элементы, и если есть - идти также смотреть порядок по вектору.
В случае вставки аналогично - никакого выигрыша от сета нет, мы не пользуемся операцией поиска, мы просто вставляем элемент и в сет и в массив векторов итератор на него.
--191.jpg31 Кб, 500x480
264 1403512
Супер тупой вопрос, но Я НЕ ПОНИМАЮ БЛЭТ. Как запилить глобалные переменные и функции? Я уже и определение вместе с объявлением писать, и в разных местах extern, то он не находит переменные, то грит, что они уже объявлены в одном из .obj.
Есть такие файлы:
global.h:
#ifndef GLOBAL_H
#define GLOBAL_H
extern int a = 228;
extern void doShit(int foo);
#endif
global.cpp:
void doShit(int foo) {/ does some shit /}

Что нужно написать в meh.cpp и mda.cpp чтобы там были доступны соответствующая переменная и функция?
Касательно неймспейсов я ничего еще не пробовал. Хочу, чтобы все было доступно без указания областей видимости, если это возможно.

Инбифо: "ололо, ты долбоеб, глобальные переменные нинужны", — да, да, я знаю.
265 1403513
>>403512

> global.cpp:


> #include "global.h"


> void doShit(int foo) {/ does some shit /}


fix
266 1403514
>>403512
Блять, оказалось, что я действительно долбоеб. Стоило только на сосач написать и все починилос. Вопрос закрыт.
267 1403515
>>403514
В cpp файл int a = 228;
В хедер extern int a;
Хотя лучше глобальные переменные не использовать совсем.
268 1403516
>>403512
В global.cpp наверх добавь
#include "global.h"

Из global.h убери присваивание, так делать нельзя, просто оставь объявление.
дальше выбери любой cpp файл и там напиши int a = 228;

>Что нужно написать в meh.cpp и mda.cpp


#include "global.h"
269 1403518
>>403515
>>403516
Хм, у меня заработало по-другому. Лучше сделаю так, спасибо.
270 1403519
>>403518
Лучше сделай так. В хедере

struct Global {
int a = 228;

void doShit();
};

в .cpp файле:
void Globall::doShit() {

}

Глобальные переменные не нужны
271 1403522
>>403519
Хуета.
1. Класс не инстанцируется, поэтому тогда уж надо делать всё статик.
2. Присваивать так нельзя для статика, это придется не в хедере.
272 1403546
>>403522
Блядь, я ему говорю, что глобальные переменные не нужны, а он собирается "делать всё статик".
Дальше ты создаешь инстанс класса Global и передаешь его там, где тебе нужна a и doShit.
273 1403558
>>403546
Так ты хрень какую-то высрал.
1. Зачем функцию в эту структуру запихивать?
2. На кой черт вообще делать так как ты предлагаешь, если это не решает проблему споашивающего? Конечно, если ему нужео между двумя цпп файлами расшарить значение переменной - скорее всего он что-то не так делает, но тем не менее может ему надо или он чисто в образовательных целях смотрит. Но твоя идея создать зачем-то структуру глобал с этой переменной мне совершенно непонятна. Он может также и без твоей структуру кидать где хочет свою переменную.
274 1408461
275 1409802
Плюсобляди, помню кто-то говорил, конфа была с вопросами с собеседований по си++ в телеге или еще где? Я одному пидору на почту выслал вопросы с трех собесов (с ответами), а он пропал на хуй и в обратку не прислал. Есть конфа или нет? Хотелось бы узнать, что хоть спрашивают спустя год.
276 1412750
>>392196 (OP)
Хороший язык. В университете изучал. Писать как приятно.
Да вот нахуй он никому не всрался. 1 вакансия на весь город на джуна. 7-10 килорублей. Пустая трата времени. Абсолютно. Учил его, блядь, полгода, что бы понять, что устроиться смогу лишь только через 5 лет ежедневного задротства. Честно любил и люблю язык, все таки он мой первый.
277 1412751
>>412750
Надо было эти полгода все эти безуказательные Джавы и Питоны учить и не сосать хуй без соли.
278 1412887
Поясните, есть одна функция, написанная не мной, очень длинная и запутанная. И внешний к ней массив, который заполняется в самой функции. Больше ничего нет. Так вот, если я ее переношу внутрь, то получаю сегфолт. Как такое может быть?
int n[N]
void f(a,b,c,d...) {...}
279 1412990
>>412750
В плюсах сейчас денег не заработаешь. Вся движуха и бабло в вебе и энтерпрайзе.
280 1413289
>>412887

>ее


Функцию? Внутрь чего?
281 1422870
Почему boost файлы из C++ нельзя просто положить в нужную папку и скомпилировать потом, добавив пути? Почему нужно что-то в PATH прописывать, boost-jam ставить? Нахуя? Boost это тупо же исходники, как и все в С++?
282 1423205
Есть книга липмана с11 и кресты за 21 день. Какую лучше читать?
283 1423252
>>422870
vcpkg install boost

Живи в 2019, а не в 1999
284 1423534
>>423252
Как таким образом собрать boost.iostreams с поддержкой zlib?
285 1424059
Qt 4.8 Можно как-то получить сигнал о том, что в QTableWidget поменялось количество строк/столбцов/элементов?
286 1424083
>>403512
а разве переменная и функция по умолчанию не глобальная?
ты тут их уже определяешь и объявляешь сразу, т.е. extern не нужен
287 1444693
Насколько корректно использование eval и exec в коде? Заметил, что это "не по понятиям", хоть кто-то из разрабов со стажем их юзает? И при каких обстоятельствах?
288 1444695
>>423534
vcpkg install boost-iostreams
289 1444696
>>444693
eval в С++? Ты тредом ошибся?
Тред утонул или удален.
Это копия, сохраненная 25 августа 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски