Двач.hk не отвечает.
Вы видите копию треда, сохраненную 10 марта 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
219 Кб, 626x626
296 Кб, 853x586
724 Кб, 1146x938
156 Кб, 552x334
Новогодний™ праздный® C++ тред #46 #904165 В конец треда | Веб
Под покровом ночи звездной
Дремлет код крестовый;
Весь рантайм и все баги
Белым снегом замело…
И шаблоны там, по коду,
В семь гигов при компиляции
Поджигают ваш пукан.
На огонь бежит сугробом
Со звездой толпа нюфагов,
Под оконцами стучатся,
И «Слава Бьярне» напевают.
«Крестобляди! Крестобляди!»
Раздается там и тут.
И в нестройном блядском хоре
Так таинственна, чиста,
Так отрадна весть святая
О рождении стандарта…

Шапка: https://github.com/sosachbot/cppthreadhat/wiki
Прошлый: https://2ch.hk/pr/res/892147.html (М)
217 Кб, 447x666
#2 #904177
Не тонем.
#3 #904181
Нелегитимный.
904269
#4 #904184
Подскажите, с чего начать изучение С++?
Алсо, знания javascript будет ли обеспечивать какой-то плюс в изучении?
904185
#5 #904185
>>904184
С того чтоб сесть и подумать надо ли оно тебе.
#6 #904190
Ваша зарплата, динозавры.
904192904724
#7 #904192
>>904190
1200 рублей
#8 #904194
Есть какие-то гайды, что нужно знать джуну на собеседовании(в приличную компанию)?
https://habrahabr.ru/post/117996/
Вот это изи.
Но нужно что-то поновее
904196
#9 #904196
>>904194
Саттера
904202
#10 #904202
>>904196
Есть вроде такого, но с с++11\14?
904211
#11 #904211
>>904202
Последние книги Саттера, лол. К тебя осталось мало времени, скоро новый стандарт выйдет, и будешь его драфты зубрить, так что поспеши.
904875
#12 #904212
Пойдёт ли Страуструп для начинающего в С++ веб-макакера? Или лучше выбрать другую книгу?
904256904681
#13 #904256
>>904212
Выбири Дваву
#14 #904269
>>904181

>урюрю

#15 #904604
Буль
#16 #904681
>>904212

>лучше выбрать другую книгу

#17 #904695
День добрый!
Посоветуйте альтернативу libevent для написания простейшего http-сервера на C++ (libevent как я понял не дружит с win х64, что меня не устраивает).
Есть еще libuv и libеv, но там вроде бы "из коробки" в 10 строчек кода веб-сервер не запустишь - нужно писать свои велики.
Есть что-то еще?
#18 #904699
>>904695
Он почти в 10 строк пишется и на сокетах/epoll/kqueue.

Именно из плюсовых — boost.asio (очень многословно и оверинжинирнуто), casablanca (очень няшно, на последних плюсах, советую), ещё какой нибудь libsocket.
904771
#19 #904702
>>904695

>libevent как я понял не дружит с win х64


Что именно не дружит? У меня конпелировалось и работало в x64.
904771
#20 #904704
>>904695
Адекватного и такого же минималистичного нету. Я использовал для подобных задач libev.
904771
#21 #904718
>>904165 (OP)
1 то что сети нет - это не баг, а фича
2 модули у силанга и студии есть.
3 корутины давно уже есть.
904814
#22 #904724
>>904190
5000 рублей в месяц и талоны в столовку
завтра вот пюрешка с сосисками будет :3
908536
#23 #904737
Нужно в map как значение хранить несколько типов(int и string). Как это провернуть?
909978910034
65 Кб, 1275x752
#24 #904746
Почему зарезервированное место памятью массива, пусть даже и неиспользованное хранится на жестком диске, а не в оперативной памяти? Размер выходящего файла при таком коде - 93мб.
904754904755904774
#25 #904754
>>904746
Некоторые компиляторы записывают нулевые байты в исполняемый файл. Вот и причина такого размера.
Пример: шланг 3.5 https://godbolt.org/g/gFRcuK
гсс 5.1: https://godbolt.org/g/GvQwBZ
904887
#26 #904755
>>904746

>>Long int



Да?
904887
#27 #904771
>>904699
>>904702
>>904704
Плюнул на использование либ. Взял за основу пример на сокетах
https://code-live.ru/post/cpp-http-server-over-sockets/
В чем я сосну?
904858904931
#28 #904774
>>904746
У тебя же данные которые должны сохранятся между запусками программы. Следовательно они должны быть записаны в сегменте данных. Дальше зависит от оптимизаций компилятора. Твой вариант - оптимизирована скорость запуска за счет размера программы (в статической памяти хранится полностью весь массив в "готовом" состоянии). В одном из вариантов продемонстрированным аноном выше оптимизирован размер программы за счет скорости запуска - хранится только имеющая смысл часть массива (нулевые байты отброшены), а полностью массив будет создан и подготовлен уже в рантайме.
904781904887
#29 #904781
>>904774

>>Твой вариант - оптимизирована скорость запуска за счет размера программы (в статической памяти хранится полностью весь массив в "готовом" состоянии)



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

>>сохранятся



Хотя всё ясно
#30 #904814
>>904718
Ты дурак? Зачем ты эту хуйню пишешь?
#31 #904858
>>904771
Во всём. По жизни.
#32 #904875
>>904211
А что у него достойного, кроме 2 exceptional книг?
904928
#33 #904887
>>904774
>>904755
>>904754
Я вернулся. Так вот еще чего могу добавить. Это случается, когда я делаю двумерный массив. То есть с обычным такого не происходит. Все равно, спасибо за ваши версии)
904952
#34 #904928
>>904875
Все.
#35 #904931
>>904771
Какая связь? libevent это про обработку событий, а не про сокеты.
#36 #904952
>>904887
Это случается не из-за того что ты делаешь двумерный массив. Это случается из-за того, что ты образуешь огромный литерал задавая первые его элемент.

Когда ты напишешь char value[max] = { 'a', 'b', 'c' } размер файла будет пропорционально велик. Дело в том, что задавая таким образом массив ты говоришь: хочу литерал, первые три байта которого - 'a', 'b', 'c', остальное заполните нулями. Это будет статический блок памяти, который должен быть загружен при запуске программы. Храниться он в data-блоке.
https://en.wikipedia.org/wiki/Data_segment
#37 #905036
Есть некий банковский софт на джаве, насколько есть смысл его переписывания на С++ и переезд на опенсоурс стек? Вывод интерфейсов нужен на веб и гуй. В результате перехода понизится стоимость поддержки, т.к. стоимость джависта и С++ разные, тем более ничего изобретать не нужно будет после переписывания, мелкие изменения и дополнения. На порядок повысится производительность системы. Интересно что скажете по делу.
905042905100905249
#38 #905040
Теперь понял. Спасибо за объяснение.
#39 #905042
>>905036
С плюсовиками которые будут стоить меньше джавистов перформанс только упадет, из каждой пизды будут лезть баги и скорость разработки упадет ниже твоего айсикью.
905052
#40 #905052
>>905042

>из каждой пизды будут лезть баги


проблема пиздотечей все еще так остро стоит?
905055
#41 #905055
>>905052
Когда ты набираешь лоу квалифаед шит готовый работать за еду и твой язык не подтирает им зад — это вообще меньшая из проблем, учитывая что раньше все работало на жаве и рамы хоть жопой жри.
905060
#42 #905060
>>905055

>лоу квалифаед шит готовый работать за еду


кто сказал что за еду?
905066905086
#43 #905066
>>905060
Ну, ты же на полном серьезе считаешь что стоимость программиста зависит от языка, а не решаемых задач, и что плюсовики обойдутся дешевле. Так вот те что обойдутся дешевле — никогда не отобьют даже сотой части денег вложенной в ту же жвм, которая тебе достается халявно.
#44 #905086
>>905060
Потому что под нижней планке зарплаты работать пойдут разве что байтоебы с заводов (та самая часть рынка плюсов, которая опускает показатель средней зп), у которых развитие остановилось на "ой бля битмаска битмаска не выровнять сука блять блять классы это оверхед нахуй rtti я все наебашу на юнионах всего-то за пару дней".
917759
#45 #905100
>>905036
Учитывая популярность джавы я сильно сомневаюсь, что джавист дороже равного по скилу плюсовика. Рыночек насыщен.
#46 #905249
>>905036

>банковский софт


>транзакции, базы, CGI, веб, хуеб


>c++


Чтобы это работало и не рассыпалось придется искать плюсовиков значимо более дороже средних жава-сеньеров. Плохая затея. Но перфоманс вырастет, да, в теории.
#47 #905757
Анончики, такой вопрос встал. Уже достаточно долгое время упарываюсь программированием на крестах на работе, естественно, окромя СТЛ наигрался уже с кучей фреймворков, но, мне кажется, что меня эта рутина уже конкретно доебала. Думаю начать оттачивать архитектурные навыки (ну знаете, архитектура программного обеспечения и все такое, молодое направление и вся хуйня). Стоит ли оно того, анончики, или нет. Я понимаю, всяко эта хренотень впоследствии окажется полезной (рассматривать структуру ПО сверху, уже прикидывать что и какой "скелет" (слеш) паттерн можно применить), но стоит ли в нее прямо таки упарываться (читать хуевы кучи книг и разбирать примеры), или все-таки это лажа в роисси мало популярная?
905811
#48 #905811
>>905757

> архитектура программного обеспечения и все такое, молодое направление и вся хуйня


С каких пор оно молодое? Думаю стоит почитать банду четырех, рядовому программисту точно пригодится, проектировщику наверное тоже.
На счет популярности профессии не скажу, в крупных компаниях с большими проектами точно есть.
906278
#49 #905900
>>904695
хули вы сразу асинхронку пишите когда вам нужен "простейший" http сервер
вам же не осилить это говно
#50 #906205
Анон, установил Mingw, например: *.cpp у меня находится в C:\folder, это мне нужно в консоле путь прописывать? А как в линукс? просто в директории /houm сырцы оставлять? или тоже прописывать путь? Подскажите книгу чтобы в ней про Gcc ключи и про утилиту make можно было почитать, на русском
906312906325
#51 #906244
#52 #906278
>>905811
Про паттерны начитался уже, в том числе эту книгу тоже. Думаю, грызть или нет уже более специфичные области проектирования (конкретно разбиение на системы, подсистемы, виды, документирование и прочее и прочее), несмотря на то, что это полезно в любом случае, не хотелось бы тратить свое время впустую.
908532
#53 #906312
>>906205
На линуксе тебе никаких MINGW устанавливать не нужно. Там GCC и G++ идут по дефолту при установке. В том же /home. создаёшь папку, например ~/home/workspace/cpp. Далее выбираешь в консоли эту папку (необязательно, но удобно), на Ubuntu команда cd /workspace/cpp. И компилируешь g++ main.cpp
906325906329
#54 #906325
>>906205
Не слушай этого >>906312, он пиздит. Либо специально, либо нихуя не знает.
906329
#55 #906329
>>906312
>>906325
Разобрался, в основном встречал gcc, интуиция подсказывает использовать его
906331
#56 #906331
>>906329
Хотя Торвальдс критиковал версию 4,9, на линуксе стоит 4,9,2 на винде 5,3, вот если можно было обновить в линуксе до более новой версии как например youtube-dl -U, было бы здорово
906332906334
#57 #906332
>>906331
Пиздец, как ты в линукс забрался с неумением компилировать. Там тебе достаточно один аргумент указать при конфигурации (а именно --prefix, чтобы не серануть мимо) и собрать гусей. Что может быть сложнее-то?!
#58 #906334
>>906331

> на линуксе стоит 4,9,2


Поставь себе дистрибутив посвежéе.
129 Кб, 1120x831
#59 #906359
2 вопроса.
Вопрос первый: слева на картинке 2 ситуации. Почему ситуация Б легальна, а ситуация А уже сообщает об ошибке памяти. Я попробовал сделать new int [26], тогда максимальное число значений массива стало 29. Компилятор gсс/g++.
Второй вопрос: можно ли другим способом динамично добавлять объекты во время работы программы? То чем я сейчас пользуюсь на картинке справа.
906365906413
#60 #906365
>>906359
Ужас какой-то. Используй std::vector например
906366
#61 #906366
>>906365
Я по книжке учусь, векторы после new и delete идут. Вроде говорят, что векторы умнее массивов, но я пока с ними даже не сталкивался.
906371
#62 #906371
>>906366
А вот про ситуации А и Б можно тут почитать http://ru.stackoverflow.com/questions/297649/Массивы-нулевой-длины
906375
#63 #906375
>>906371
Спасибо. Проверю другим компилятором.
#64 #906413
>>906359

>Почему ситуация Б легальна, а ситуация А уже сообщает об ошибке памяти.


Нипочему, просто повезло с Б. Оба примера могут падать на другой машине/другом компиляторе. Тебе мама разве не говорила, что чтение/запись за границы маасива это UB?
906442
#65 #906417
Часик в сладость. Есть ли тут великие и добрые люди, которые пояснят мне, тупому студентику, как реализуются в С++ такие концепции ООП как композиция и наполнение.
906425906427
#67 #906427
>>906417

>> наполнение


Впервые слышу, может ты перевел что не так

>> композиция


Это же паттерн
906432
19 Кб, 2165x165
#68 #906432
>>906427
у меня в лекции написано так:
Наполнение - количество объектных полей может меняться от нуля до достаточно больших значений (реализуется с помощью списков)
906436
#69 #906434
>>906425
спасибо, чекну
#70 #906436
>>906432
Странные названия.
Я больше знаком с агрегированием и композицией. Только в твоих терминах агрегирование - композиция, а композиция - наполнение ("мои" термины перед дефисом).
Если кратко, композиция подразумевает такую связь объектов, при котором один объект (родитель) становится владельцем другого или других (дочерних). При уничтожении родителя уничтожаются все дочерние объекты.
При агрегации один объект (родитель) лишь хранит другие (дочерние), но не является их хозяином, то есть при уничтожении родителя дочерние объекты не уничтожаются, в отличии от агрегирования.

Подробнее можешь посмотреть тут:
https://ru.wikipedia.org/wiki/Агрегирование_(программирование)
906441
#71 #906441
>>906436
Бля не то написал, видимо. ЩАс читанул пару абзацев из той методички и понял, что ошибся с терминами.
#72 #906442
>>906413
Говорила. После того как это заработало я полез в гугл. Потом сюда. На винде это не заработало совсем. Ну раз так неправильно, то делать так наверное не стоит.
#73 #906570
Почему у меня программа вылетает с ошибкой, если я вызываю delete[] для массива посреди main(), не вылетает при вызове того же в другой функции, не вылетает при delete указатель?
906586
#74 #906586
>>906570
Код в студию, предсказатели, гадалки и шаманы в отпуске.
906657
#75 #906587
Откуда взялся этот адрес? Рандом? Это адрес в виртуальной памяти? Ниже упомянут что для mov нужен адрес в реальной памяти. Разве есть какаята проблема с переводом из виртуальный в реальную? Нужно же просто знать таблицу страниц виртуальной памяти. Она всегла есть независимо от того какую программу запускать.
301 Кб, 1745x777
#76 #906589
>>906587
Пик забыл
#77 #906657
>>906586
Тут не в коде дело, но сделал наглядно: http://ideone.com/MEjyN0
Тут даже видно, в какой момент всё ломается. Почему так?
906663
#78 #906663
>>906657
delete можно применять только к указателям возвращенным new. Установить указатель на случайную ячейку памяти и заюзать туда delete нихуя не даст нормального.
906665
#79 #906665
>>906663
int* arr = new int[3];
Это, по-твоему, указатель на случайную ячейку памяти? Точно такой же указатель "на случайную ячейку памяти" есть в f(), только там он нормально удаляется.
#80 #906668
Понял, в чём тут была ошибка. Мой косяк.
#81 #906693
Чего не работает? Можно как-то в рунтайме тип переменной определить? Теперь де всякие авто есть и тому подобное.
http://ideone.com/e2wQbn
906696
#82 #906696
>>906693
У тебя переменной b не существует после выхода из if else. Можно сделать указатель на void, а в if else выделить память нужного типа но мнекажется эта хуйня какая-то
906712
#83 #906712
>>906696
Всё. Понял как сделать. Код писать не буду т.к. с телефона.
#84 #906927
>>906587

>Откуда взялся этот адрес? Рандом?


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

>Это адрес в виртуальной памяти?


да, очевидно. адресами в реальной памяти заведует только меморименеджер в ядре

>Ниже упомянут что для mov нужен адрес в реальной памяти. Разве есть какаята проблема с переводом из виртуальный в реальную? Нужно же просто знать таблицу страниц виртуальной памяти. Она всегла есть независимо от того какую программу запускать.


wat
906953
#85 #906953
>>906927
Ну там не совсем рандом. 0x8048 это не рандом
#86 #907018
>>906587

> Откуда взялся этот адрес? Рандом?


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

> Ниже упомянут что для mov нужен адрес в реальной памяти. Разве есть какаята проблема с переводом из виртуальный в реальную?


С этим ебется ОС. Программа оперирует с виртуальной паматью, так как будто это реальная - определить что ей подсовывают именно виртуальную память она может только по косвенным признакам (например похожесть адресов выделенной памяти при каждом запуске).
#87 #907104
>>906587

>Откуда взялся этот адрес? Рандом?


Аллах так пожелал.
24 Кб, 417x236
#88 #907306
Помогите.
907309907311907314
#89 #907309
>>907306

> 2015


> CD-ROM


Ясно.
#90 #907311
>>907306
Скачай и установи
#91 #907314
>>907306
Попробуй Haskell Platform установить
907324908401
#93 #907449
В шапке все ссылки протухли:(
907488
#94 #907488
>>907449
Там написано что делать. А обновлять — мне лень, если есть желающие помочь покидайте свежих ссылок.
#95 #908252
Хули тут так тихо?
Когда 17 стандарт запилят?
908288908329
#96 #908288
>>908252
В 2020 заходи.
#97 #908329
>>908252
ты сначала с лямбдами из 14 стандарта разберись
908340
#98 #908340
>>908329
[]<>(){} разобрался.

>14 в 2к17-м


В каком-нибудь gcc 8 уже наверное все потенциальные фичи реализованы
908351
#99 #908351
>>908340
https://gcc.gnu.org/projects/cxx-status.html#cxx1z
http://clang.llvm.org/cxx_status.html
В 7-м гцц уже все есть кроме 1-й фичи, а в последних шлангах почти все есть.
908402
#100 #908401
>>907314
Будут ли в будущих стандартах выпиливать ненужное гавно?
908402908448908589
#101 #908402
#102 #908448
>>908401

Бббудут!
908534
#103 #908449
Когда завезут модули?
908467908534
#104 #908467
>>908449

>Когда завезут модули


никогда
#105 #908532
>>906278

Архитектура познаётся только на практике. Книжки грызть не имеет смысла, потому что в этой области они мало что имеют общего с реальность.
908534
#106 #908534
>>908448
Нет.
>>908449
Не раньше стандарта двадцатого года. Именно потому что не хотят выкидывать старое говно.
>>908532
Ты что! А как же котик и собачка унаследованные от животного????
#107 #908536
>>904724

Ну, кто там жаловался, что работать за еду не будет?! Пюрешка с сиськами! Налетай!
908555908574
#108 #908555
>>908536
Для рашки это хороший вариант для одиночки, если еще общагу прилагают.
Если по еде и жилью обеспечен, то считай ты успешен. 5к как раз на одежду хватит.
908560
#109 #908560
>>908555
Это скорее всего без жилья.

Когда искал работу видел вариант за 4к - в местной областной больничке электротехником, лампочки менять, проводку, и т.п.
Но 4к - этого даже на жилье не хватит, а свое жилье больничка не предоставляет. Не говоря уже о питании.

И как там работать предлагают?
Либо тратить 3к на еду и жить на улице, либо оплачивать коммуналку этими 4к и питаться святым духом.

ИМХО дворником за 8 выгоднее - можно и квартиру оплатить и еду. Но на одежду уже не хватает.

И вот как с такими ЗП выживать?
908567
597 Кб, 1000x562
25 Кб, 400x241
#110 #908567
>>908560

>И вот как с такими ЗП выживать?


Очень просто
908571
#111 #908571
>>908567
Дык это хымик. А чо делоть математику?
908576
#112 #908574
>>908536
А я б за пюрешку с сосисками поработал. У меня как раз уровень знаний C++ подходящий: две прочитанные книги. А так хоть опыт какой.
#113 #908576
>>908571
Для матем атика есть биржи, где можно нехило намахинировать.
Для экон омика есть черная бухгалтерия.
И т.д.
#114 #908589
>>908401
В 17-м уже выкинули помеченное в 14-м бумажкой deprecated
908778
#115 #908607
Какие актуальные на данный момент GUI существуют?
#116 #908637
908902
#117 #908766
#118 #908778
>>908589
Подробнее можно?
908797908808
#119 #908797
#120 #908800
Когда завезут сериализацию?!
908811
#122 #908811
>>908800
Сразу после того, как деление на 0 и обращение по нулевому указателю станет defined behaviour
#123 #908870
ПОСТАВИЛ CLION
@
УДАЛИЛ
#124 #908902
>>908637
GTK же.
909111
#125 #909033
>>908607
Нет ни одной.
#126 #909051
>>908607
онли QT
909111
#127 #909111
#128 #909269
Нужно сделать стрим скриношотов, отправляя по TCP;
Нужно это делать быстро, поэтому решающим фактором можно считать размер изображения, поэтому нужно сделать скрин, сжать его, засунуть в буфер и отправить;
когда я использую https://msdn.microsoft.com/en-us/library/windows/desktop/dd183402(v=vs.85).aspx , на выходе получается 8 мб, причем если пересохранить любым редактором в .jpg размер будет 300 кб (!) без существенной потери читаемости.
Нагуглил только класс CImage, который не включен в инклюды gcc.
Все остальные предлагают пересылать все 8 мб.
909339
#129 #909339
>>909269
Берешь ffmpeg, заворачиваешь стрим на него, он работает быстро, убирает избыточность, сильно снижает битрейт практически без потери качества. На другой стороне разворачиваешь стрим любым видеоплеером.
Это выгоднее, чем пережимать покадрово в жипеги или стримить битмапы. И велосипеды не нужны - все уже готовое.
909406909451
#130 #909387
>>904165 (OP)
Хочу перекатиться из пхп в си ++. Какой стек и какое приложение порекомендуете сделать в качестве хоум проекта для джуна?
909408
#131 #909406
>>909339
это мамкин хакер, он очередной ратник пишет, а ты ему ffmpeg предлагаешь, кек
909451
#132 #909408
>>909387
конпилятор
#133 #909413
ЗАПИЛИТЬ КОМНАТНЫЙ СЕРВЕРНЫЙ ПОЛИМОРФИЗМ

Как на си или си++ реализовать полиморфизм кода, чтобы функции каждый раз компилировались по-разному? Есть ли для этого какие-то средства метапрограмминга? Например, чтобы вместо вызова NtMapViewOfSection генерировалось

__asm nop
__asm nop
__asm xynta
call NtMapViewOfSection
__asm govno
909425
#134 #909425
>>909413
Шаблоны и макросы чем не подходят?
909456
#135 #909451
>>909339
Заебатая хуйня, для вебки то, что нужно.
То есть, за одну итерацию я беру битмап, хуярю однокадровое видео из этого битмапа, а с другой стороны воспроизвожу по одному видео за пакет? Это прокатит?
>>909406
Если все понимаешь - почему бы и не подсказать, я же не платину спрашиваю, а вполне конкретные вещи.
#136 #909456
>>909425

>Шаблоны


Каким образом их можно использовать для того, чтобы сделать полиморфизм кода?
909515
#137 #909515
>>909456
Самым прямым. Шаблоны - по определению полиморфизм. Ты объясни по-человечески, что тебе надо?
909518
#138 #909518
>>909515
Он хакир и хочет самомодифицирующийся код, как под досом.
909523
#139 #909523
>>909518
Пусть на форте пишет - там такое с полпинка делается.
909648
#140 #909603
Хочу в целях самообразования написать простенький тетрис. Какая библиотека лучше подходит для вывода простенькой графики а-ля разноцветные квадратики?
909609
#141 #909609
>>909603
Если что-то нормальное нужно то SFML, например, там даже вроде книга есть с примером разработки игры. Если тебе совсем просто попробовать то можно прямо на форме рисовать в Qt или VS - но будет выглядеть как гавно, хотя у них там вроде как есть двойная буферизация, но даже тетрис они уже не тянут (так как не предназначены для этого). Но попробовать можно.
921949
#142 #909648
>>909523
Проще снять защиту от записи со страниц с кодом, чем об стековое говно руки выкручивать.
909659
#143 #909659
>>909648

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


Тогда тебе придется выкручивать руки об голый асм-говно, а то и машкоды вручную пердолить. Форт гораздо удобнее.
909671
#144 #909671
>>909659

>Форт гораздо удобнее.



> стековая машина


> удобнее регистровой



Спс паржал.
909675
#145 #909675
>>909671
Форт удобен как макроассемблер плюс маленький и простой рантайм. Стековая машина удобнее регистровой просто без вариантов, поэтому ее в каждую первую ВМ и пихают.
909681
#146 #909681
>>909675

> Стековая машина удобнее регистровой просто без вариантов, поэтому ее в каждую первую ВМ и пихают.


Код для этих ВМ пишут не руками, а компилятором.
Для компилятора стековая машина удобнее, для человека — нет.
909694909722909780
#147 #909694
>>909681
Ебанутая какая-то у тебя логика.
Если так посудить - давно под все машины код пишут не руками, так какого хрена везде не стековые машины? Конпеляторам жи удобнее
909700909707
#148 #909700
>>909694

>Ебанутая какая-то у тебя логика.


Нет, у тебя.
Питоновская VM писалась создателями языка чтобы им было проще компилировать в этот байт-код.
Аналогично JVM затачивалась конкретным создателем компилятора под для упрощения компиляции определённого языка.
И т.д.

>Если так посудить - давно под все машины код пишут не руками, так какого хрена везде не стековые машины? Конпеляторам жи удобнее


Унылое передёргивание.
#149 #909707
>>909694

>Если так посудить - давно под все машины код пишут не руками, так какого хрена везде не стековые машины? Конпеляторам жи удобнее


Очевидно потому, что создатели реальных машин руководствуются удобством компиляции далеко не в первую очередь.
#150 #909722
>>909681

>Для компилятора стековая машина удобнее, для человека — нет


Аллокация регистров - NP-полная задача, на решение которой требуются вычислительные ресурсы, не важно машина их использует или мозг программиста. Плюс форт обычно не чистая стековая машина, почти во всех реализациях есть переменные. Кроме того стеков два, и использование стека возвратов для временного хранения значений значительно уменьшает стековую акробатику. Не говоря о том, что модель с двумя стеками предлагает гораздо более высокий уровень абстракции, к тому же легко воспринимаемый человеком, в отличие от асма с регистрами.
Для компилятора удобнее не стековая машина, а SSA или CPS, по которым можно сразу делать кучу оптимизаций.
#151 #909753
>>909722

>Для компилятора удобнее не стековая машина, а SSA


Спс паржал ещё!

Если для компилятора удобнее SSA, почему же clang выплёвывает LLVM-код не в SSA-форме, а с кучей ячеек памяти, куда по 100 лишних раз пишутся и откуда читаются данные? Только mem2reg-пасс LLVM-а превращает этот ужас в SSA.
Почитай http://llvm.org/docs/tutorial/LangImpl07.html , что ли.
909780909799
#152 #909755
>>909722

>Аллокация регистров - NP-полная задача, на решение которой требуются вычислительные ресурсы, не важно машина их использует или мозг программиста.


Прадалжаю дико ржать. Если неважно, использовать машину или мозг, зачем вообще машины используют для решения задач?
909780
#153 #909780
>>909753

>почему же clang выплёвывает LLVM-код не в SSA-форме, а с кучей ячеек памяти


Потому что clang и сишка. LLVMу-то полюбасу удобнее нормальный SSA принимать.
>>909755

>зачем вообще машины используют для решения задач?


Ты тред читаешь вообще? Пельмень вверху >>909681 считает, что под регистровую машину (асм) человеку удобнее писать, чем под стековую (форт), что явная чепуха.
909782
#154 #909782
>>909780

>Потому что clang и сишка.


Итак, ты сам опроверг своё утверждение, что компилятору удобнее производить SSA-код.
909786
#155 #909785
>>909722

> Плюс форт обычно не чистая стековая машина, почти во всех реализациях есть переменные.


В большинстве VM есть переменные и инструкции вроде
LOAD, которые снимают с вершины стека адрес и вместо него кладут значение.

> Кроме того стеков два


На асме можно написать библиотечку-реализацию стека и завести себе хоть 500 стеков.
909788
#156 #909786
>>909782
Ты с логикой дружишь вообще? Объектный код делает LLVM, он компилятор, ему удобнее SSA. Clang - транслятор из сишки в формат LLVM, он делает как умеет, с аллокациями на стеке, в надежде, что LLVM дальше все разрулит.
909792
#157 #909788
>>909785

>На асме можно написать библиотечку-реализацию стека и завести себе хоть 500 стеков


А на форте можно написать реализацию асма, и завести себе хоть 500 ассемблеров. Суть в том, что с двухстековой машиной работать ничуть не менее удобно, чем с регистрами в асме.
#158 #909792
>>909786

>Ты с логикой дружишь вообще?


А ты, долбоёб? Речь шла про то, что создатели язычков высокого уровня запиливают под них стековые VM, т.к. под них крайне легко комилировать: высрать код для стековой машины можно просто правильным обходом AST (тут я слегка утрирую, конечно, но в общем это верно)

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

SSA удобнее для оптимизаций, но компилировать в SSA это pain in the ass. Понял, быдлан?
909795
#159 #909795
>>909792
Я говорил, что компилятору удобнее с SSA или CPS работать на входе. Компилятор - тот, кто из промежуточного представления машинный код делает. Так ясно?
Олсо разницы во что выводить, SSA или стековый язык практически нет - они переводятся друг в друга элементарно.
#160 #909799
>>909722
А вот это уже аргумент.
Действительно, задача распределения данных по куче регистров - очень ресурсоемкая задача. Потому все эти gcc и тормозят.

Для стековых машин конпеляция быстрая и простая - регистр всего 1-2, причем с накоплением, знай себе пихай да напихивай.

Но это и минус: когда у тебя много регистров, можно совершить значительно больше оптимизаций.
Регистр позволяет банально не выгружать данные во время операций, сохраняя нить исполнения (нить вычислений одних и тех же данных) в тактовой доступности (на больших чипах полтакта).
Т.е. регистры позволяют быстро и дешево переключаться между несколькими нитями исполнения одного потока, не трогая кэши и память, работая таким образом сверхбыстрым буфером. А иногда и распараллеливая нити исполнения: многие операции работают сразу с несколькими регистрами параллельно, фактически параллельно выполняя операцию над несколькими нитями исполнения - тут вообще кратный рост скорости, если нити данных грамотно свести в такие регистры.
Зависимость тут походу нелинейная: быстрая оценка говорит что каждый следующий регистр ускоряет код больше, чем предыдущий.
Но регистры стоят очень дорого.
За каждым регистром скрывается сотня переключателей и шин. Все это ест много энергии, снижая энергоэффективность, и понятно, сильно ограничивает тактовую частоту - шины получаются намного длиннее, чем необходимо в случае одного регистра.

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

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

Где важнее энергоэффективность, надежность, стоимость или много параллельного кода - там будут играть стековые машины.
Но с определенного количества исполнительных устройств (операций), которые удлиняют шины, усложняют, удорожают, снижают частоты и энергоэффективность стековых машин, опять начинают играть регистровые машины.
Т.е. стековые машины пригодны только там, где есть еще и ограничение по исполнительным устройствам, количеству команд.
Для слишком большого количества команд пилить стековую машину неэффективно, и проще запилить регистровую, она выйдет примерно той же сложности +/-, зато появится возможность поднять уровень оптимизаций и ускорить код.

В продаже есть вот какие вкусные стековые машины:
http://www.linux.org.ru/forum/development/5472606
https://geektimes.ru/post/133291/
https://geektimes.ru/post/134057/
20 баксов, 1Вт, 144 ведра, 96 миллиардов операций в секунду. Казалось бы: конфетка!
Но! Оперативка и пзу по 64 ячейки на ведро, т.е. эффективность сильно ограничена, программы маленькие, а данные придется гнать потоком через все ведра, не задерживаясь - памяти ни подо что просто нет.
Инструкций всего 32 - большинство операций придется расписывать как микрокод, разбивая на десятки и сотни шагов.
Такая вот эффективность. 96 гигаопс/с идут коту под хвост: штука эта пригодна только для очень узкой группы потоковых алгоритмов, и только там, где нужна энергоэффективность - на большинстве алгоритмов эти 96 гигаопс/с выйдут медленнее чем 4 гигаопса десктопного одноядерного интела: интел имеет кучу регистров, кучу команд, кучу исполнительных устройств, кучу кэшей/оперативок/пзу, плюс для него оптимизации последовательного кода намного дешевле.
Такие дела.

>>909753

>почему же clang выплёвывает LLVM-код не в SSA-форме, а с кучей ячеек памяти, куда по 100 лишних раз пишутся и откуда читаются данные?


Потому что так дешевле и удобнее.
Программа - это граф потока данных и команд, переменные - узлы.
Конпеляция - сжатие графа. Попытка свести количество переменных к количеству физических регистров.
Чтобы грамотно (оптимально) сжать граф по ширине, нужно перебрать миллионы конфигураций графа. Неграмотно можно сжать дешево, но толку от этого, понятно, ноль.
И чем меньше регистров, тем дороже такое сжатие, труднее сделать это эффективно, чтобы не замедлить программу.
Поэтому выгоднее сжать граф чуть-чуть - до сотен и тысяч регистров. Просто убрать избыточность, самыми простыми и быстрыми методами.
А далее пережать уже к формату конкретной машины - не забывай что LLVM все сводит к формату виртуальной машины, который можно перегнать к любому формату физических машин.
#160 #909799
>>909722
А вот это уже аргумент.
Действительно, задача распределения данных по куче регистров - очень ресурсоемкая задача. Потому все эти gcc и тормозят.

Для стековых машин конпеляция быстрая и простая - регистр всего 1-2, причем с накоплением, знай себе пихай да напихивай.

Но это и минус: когда у тебя много регистров, можно совершить значительно больше оптимизаций.
Регистр позволяет банально не выгружать данные во время операций, сохраняя нить исполнения (нить вычислений одних и тех же данных) в тактовой доступности (на больших чипах полтакта).
Т.е. регистры позволяют быстро и дешево переключаться между несколькими нитями исполнения одного потока, не трогая кэши и память, работая таким образом сверхбыстрым буфером. А иногда и распараллеливая нити исполнения: многие операции работают сразу с несколькими регистрами параллельно, фактически параллельно выполняя операцию над несколькими нитями исполнения - тут вообще кратный рост скорости, если нити данных грамотно свести в такие регистры.
Зависимость тут походу нелинейная: быстрая оценка говорит что каждый следующий регистр ускоряет код больше, чем предыдущий.
Но регистры стоят очень дорого.
За каждым регистром скрывается сотня переключателей и шин. Все это ест много энергии, снижая энергоэффективность, и понятно, сильно ограничивает тактовую частоту - шины получаются намного длиннее, чем необходимо в случае одного регистра.

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

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

Где важнее энергоэффективность, надежность, стоимость или много параллельного кода - там будут играть стековые машины.
Но с определенного количества исполнительных устройств (операций), которые удлиняют шины, усложняют, удорожают, снижают частоты и энергоэффективность стековых машин, опять начинают играть регистровые машины.
Т.е. стековые машины пригодны только там, где есть еще и ограничение по исполнительным устройствам, количеству команд.
Для слишком большого количества команд пилить стековую машину неэффективно, и проще запилить регистровую, она выйдет примерно той же сложности +/-, зато появится возможность поднять уровень оптимизаций и ускорить код.

В продаже есть вот какие вкусные стековые машины:
http://www.linux.org.ru/forum/development/5472606
https://geektimes.ru/post/133291/
https://geektimes.ru/post/134057/
20 баксов, 1Вт, 144 ведра, 96 миллиардов операций в секунду. Казалось бы: конфетка!
Но! Оперативка и пзу по 64 ячейки на ведро, т.е. эффективность сильно ограничена, программы маленькие, а данные придется гнать потоком через все ведра, не задерживаясь - памяти ни подо что просто нет.
Инструкций всего 32 - большинство операций придется расписывать как микрокод, разбивая на десятки и сотни шагов.
Такая вот эффективность. 96 гигаопс/с идут коту под хвост: штука эта пригодна только для очень узкой группы потоковых алгоритмов, и только там, где нужна энергоэффективность - на большинстве алгоритмов эти 96 гигаопс/с выйдут медленнее чем 4 гигаопса десктопного одноядерного интела: интел имеет кучу регистров, кучу команд, кучу исполнительных устройств, кучу кэшей/оперативок/пзу, плюс для него оптимизации последовательного кода намного дешевле.
Такие дела.

>>909753

>почему же clang выплёвывает LLVM-код не в SSA-форме, а с кучей ячеек памяти, куда по 100 лишних раз пишутся и откуда читаются данные?


Потому что так дешевле и удобнее.
Программа - это граф потока данных и команд, переменные - узлы.
Конпеляция - сжатие графа. Попытка свести количество переменных к количеству физических регистров.
Чтобы грамотно (оптимально) сжать граф по ширине, нужно перебрать миллионы конфигураций графа. Неграмотно можно сжать дешево, но толку от этого, понятно, ноль.
И чем меньше регистров, тем дороже такое сжатие, труднее сделать это эффективно, чтобы не замедлить программу.
Поэтому выгоднее сжать граф чуть-чуть - до сотен и тысяч регистров. Просто убрать избыточность, самыми простыми и быстрыми методами.
А далее пережать уже к формату конкретной машины - не забывай что LLVM все сводит к формату виртуальной машины, который можно перегнать к любому формату физических машин.
909808
#161 #909808
>>909799
Вот еще более наглядная ссылочка
http://www.kit-e.ru/assets/files/pdf/2011_11_111.pdf
#162 #909967
Недавно узнал, что я писал не на C++, а на си с классами. Думаю, такие же как я все после вузов. Как мне быть в мейнстриме, тыкать stl, везде использовать шаблоны и всякий boost?
#163 #909978
>>904737
В мапе один аргумент - ключ, другой - значение . Можно сделать map<int, tuple<int, string, char, float>>
#164 #910034
>>904737
variant
#165 #910469
Нужно ввести число. Потом нужно проверить, введено ли число вообще, и если нет - закончить алгоритм. Как это реализовать? Предполагаю, что через string, но как тогда перевести string в int?
910494
#166 #910494
>>910469
Если что-то простое то читаешь через std::cin и проверяешь на failbit и badbit. Проблема с std::cin что если нет четких ограничений на ввод (например - или инт или нахуй) то нужно много попыток чтения делать. Если производительность важна, то там да, читаешь в строку потом парсишь. Есть atoi, atof и их друзья.
910502910528
#167 #910502
>>910494
Все очень простое. Буквально два варианта: пустая строка или число. Если строка пустая, то алгоритм заканчивается, если там число - string переводится в int. Возможность букв не учитываем хотя они вроде все равно в int не сконвертятся. Получается, нужно написать getline(cin, stringname), потом сделать проверку на пробел на первой позиции int n=-1; n=stringname.find(' '); if (n>-1) break;, потом через atoi переводить строку в int. Правильно?
Пойду гуглить atoi.
910509
#168 #910509
>>910502
atoi при ошибке возвращает ноль, так что хуй поймешь ошибка там или просто ввели ноль. Бери stoi, оно исключение бросает.
910513910528
#169 #910513
>>910509
Понял. А как запилить проверку на пробел? stringname.at(0)==' ' не детектит.
910515
#170 #910515
>>910513
isspace
910528
#171 #910528
>>910494
>>910509
>>910515
Спасибо, пошел разбираться.
#172 #910639
Пичёт от CL.exe

Простой кодец: http://codepad.org/GWbINr9g

Гцц компиляет нормально.
А вот cl.exe Хуюшки:

$ cl 1.cpp
Оптимизирующий компилятор Microsoft (R) C/C++ версии 19.00.24215.1 для x86
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

1.cpp
1.cpp(14): error C2059: синтаксическая ошибка: ;

НО, ЕСЛИ РАЗВЕРНУТЬ МАКРОС - ВСЁ НОРМ!!111
Чё за дичь? cl.exe не умеет в многопроходность? Как научить?
Кто нибудь сталкивался?
910709910717
149 Кб, 1111x621
#173 #910664
Где такой же экзамен сдать онлайн и бесплатно? Просто чтобы вписать в портфолио и показать что я кресты знаю.
910776911207
#174 #910709
>>910639
Нахуй такое делать?
910712
#175 #910712
>>910709
это код от Sun, я просто хочу собрать его
Они наркоманы
#176 #910717
>>910639
Це пиздец, но я пофексел: http://codepad.org/DMAwf0U1
Банально вынес 0 в макрос и стало норм. Какой-то баг штудийного конпелятор -__-
39 Кб, 949x378
#178 #910787
>>910776
Где кнопочка начать?
910794
#179 #910794
>>910787
На месте
910796
31 Кб, 1439x550
#180 #910796
>>910794
Пикча отвалилась
910806
#181 #910806
>>910796
В другом браузере её тоже нет. Адблок выключен. Зас попробую зарегаться. А это норм тест? Не слишком лёгкий? После прохождения можно будет хвастаться что я кресты знаю? А если я там зарегаюсь, тест пройду, а работать не буду? Результат не аннулируют?
910811
#182 #910811
>>910806

> А это норм тест?


> Не слишком лёгкий?


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


> А если я там зарегаюсь, тест пройду, а работать не буду?


> Результат не аннулируют?


Хуй знает, пройди, расскажешь
кнопка появляется после регистрации
910828
#183 #910828
>>910811
Плохой тест. Ответил не на все вопросы, время не вышло, а он завершился. Он ограничивает время одного вопроса двумя минутами. На некоторых вопросах где надо выбрать несколько вариантов можон выбрать только 1. В конце вопросов где надо поставить пропущенное слово в предложение он ставит знак вопроса из-за чего предложение теряет смысл. Вопросы тупо откуда-то скопипащены т.к. в начале одного из вопросов стоял его номер который не совпадал с тем что над постом и которого там не должно было быть. Есть не столько вопрос с неоднозначным ответом и примеры кода с неопределёным поведением. Были вопросы по си и по линуксу. В конце теста мне не дали сертификат. возможно из-за низкой оценки Пересдать можно через 10 месяцев. Детали посмотреть нельзя. Реквестирую другой тест.
911022911029
142 Кб, 777x1113
#184 #910845
Не до конца понимаю указатели. Ещё более-менее осознаю, что можно создать итератор по вектору, с каждой итерацией выдавая значение. itr указывает, например, на целочисленное, содержащееся в ячейке, но не само целочисленное. int p = &a, p указывает на адрес a.

Но что мы делаем тут?

struct A {
double x;
};
const A
a = new A{ 0 };

Создаем структуру, а дальше идёт её объявление?
910847910850910856
#185 #910847
>>910845
http://pastebin.com/iVDHptqL

Блядь, имел ввиду вот это.
#186 #910850
>>910845
Динамическое выделение памяти. Не используй new, когда есть unique_ptr
910856
#187 #910856
>>910845
>>910850
Почитай о динамической памяти тут:
http://itedu.ru/courses/cpp/cpp-dynamic-memory-allocation
И о умных указателях (с++11 и выше)
http://archive.kalnitsky.org/2011/11/02/smart-pointers-in-cpp11/
910859
#188 #910859
>>910856
Класс, спасибо.
#189 #910931
У вас нет какого-нибудь чата с обсуждением где-нибудь?
42 Кб, 404x406
64 Кб, 769x832
#190 #911022
>>910828
Ну раз плохой тест, не прорабатывай заскриненные ответы, а жди пока подскажут хороший.
#191 #911026
Какое нахуй кеширование строк в компайлтайме; ты сам то понял что высрал?
Что за пиздец на 2 и 3 ОП-пике?
911029911190
#192 #911029
>>910828

>Пересдать можно через 10 месяцев


Через месяц же. Сдал его на 3.4 из 5. Считаю что для тупого ньюфага вроде меня это неплохой результат. Пойду еще какой-нибудь оттуда пройду.
>>911026
Это из прошлого треда
#193 #911190
>>911026

>Какое нахуй кеширование строк в компайлтайме; ты сам то понял что высрал?


Я-то понел (что ето хэширование), а ты очевидно — ниет, вот и запеканус.

>Что за пиздец на 2


Отсылка к знаменитой цитате медведева, очевидно же.

>и 3 ОП-пике?


https://2ch.hk/pr/res/892147.html#903297 (М)
#194 #911207
>>910664
Бамп вопросу. Какие ещё тесты знаете?
911356
#196 #911830
Класс на аsio с сокета принимает пакеты. Нужно, чтобы пакеты сваливались в контейнер вне класса. Нормой ли в класс передать unique_ptr наверно указатель на контейнер? Или кривой подход? Как сделать правильно?
911987912088
#197 #911987
>>911830
std::transform + std::back_inserter

гыг
#198 #912088
>>911830
Передавать ссылки на какие-то внешние контейнеры не очень идея. Single responsibility же, вся хуйня. Если класс работает с сокетом, то он должен только работать с сокетом, а не управлять еще и масивом. Делаешь через наблюдение. Получив пакет класс рассылает своим наблюдателям сообщение что пакет получен, а они уже решают что с ним делать.
Есть еще похожий на твой вариант, когда интерфейс реализован через внутренний контейнер. Тоесть у тебя асинхронный клиент (или сервер). В одном потоке твой класс принимает пакеты и складывает в свою внутреннюю (желательно не блокирующую) очередь. Рабочие потоки обращаются (через геттер, не напрямую) к очереди и вытаскивают оттуда пакеты. Но в таком случае на контейнер внутри класса, никаких внешних ссылок нет, внутренний контейнер просто используется для организации потокобезопасного интерфейса.
Если тебе нужно что-то простое то твой вариант в принципе тоже ок. Только передаешь обычную ссылку на контейнер, и обзываешь это делегатом. Если в будущем функционала контейнера станет не хватать, то потом просто пишешь настоящего делегата с интерфейсом твоего контейнера (тех методов что реально вызываются в коде). Если все правильно делать, то прийдеться менять достаточно мало существующего кода. Смотря как написал конечно, если твой контейнер лезет со всех щелей приложения (потому что ты его всюду передаешь голого), то тогда настанут естественные пиздарики.
912179
#199 #912156
нахуй нужны d-поинтеры?
912177912221
#200 #912177
>>912156
учись гуглить по ключевым словам типа "какая то хуйня use case"
#201 #912179
>>912088
а сишник сделает это все в одной функции через while со свичем
кек
#202 #912215
Ананасы, что лучше std::cout или printf?
912216912241
#203 #912216
>>912215
printf(), причем по всем параметрам: от удобства и гибкости до, банально, скорости компиляции.
#204 #912221
>>912156
Для сохранения бинарной совместимости при изменении реализации.
#205 #912241
912247912263912434
#206 #912247
>>912241
Чем оно лучше?
912358
6 Кб, 544x220
#207 #912263
>>912241
Щикарно. Что я делаю не так?
912299912358912537
#208 #912299
>>912263
Предположу, что твой терминал должен быть определенного типа
#209 #912358
>>912247
Типобезопасность+удобная форматная строка
>>912263
Хлебаешь сперму.
#210 #912434
>>912241
fmt топчик, да
#211 #912445
Аноны, на каком этапе обычно неосиляторы дропают с++?
913531
#212 #912462
Как обратиться к члену глобального объекта подобным образом?
::(*object).variable;
912499
#213 #912499
>>912462
::object->variable
912500
#214 #912500
>>912499
Мне надо так как я написал.
912508
#215 #912508
>>912500
*(::object).variable
912509
#216 #912509
>>912508
Точнее так
(*::object).variable
912510
#217 #912510
>>912509
Работает, спасибо.
14 Кб, 1413x460
#218 #912537
>>912263
азаза
#219 #912585
Пришло время разобрать говнокод.
Говнокод сам себя не разберёт.

Нужны знающие SFML и Box2D

В игре присутствует модель игрока. Суть в том, что при нажатии W игрок просто летит вверх. Эта проблема решилась просто проверкой вертикальной скорости y игрока перед следующим нажатием.

if(evt.key.code == sf::Keyboard::W && playerBody->GetLinearVelocity().y == 0)

А вот как решить проблему полёта при зажатии "A" или "D"? Проверять горизонтальную скорость не вариант. При зажатии кнопки, игрок просто летит в выбранном направлении.

if(evt.key.code == sf::Keyboard::D)
playerBody->SetLinearVelocity(b2Vec2(5.0f, 0.0f));

А так же следующая проблема состоит в том, что при нажатии W+D или W+A игрок поднимается вверх, но влево-право не двигается.

if(evt.key.code == sf::Keyboard::A && evt.key.code == sf::Keyboard::W)
playerBody->SetLinearVelocity(b2Vec2(-50.0f, 50.0f));
912597912617912633
#220 #912597
>>912585
Как уже говорилось в СЮ:
в играх нажатия клавиш надо обрабатывать не в ивент хендлере, а в игровом цикле.
Го в /gd/, там более уместно.
#221 #912617
>>912585
Держи структуру данных, где отмечаешь какие кнопки нажати (по инпут ивентам меняешь эту структуруру), в игровом цикле проверяешь структуру на предмет нажатых кнопок.
#222 #912633
>>912585
Ты неправильно работаешь с телами. Тебе, как правило, в ручную не нужно устанавливать скорости - с скоростями ебется движок, это его работа. Ты напрямую манипулируешь скоростями в редких случаях (например при инициализации объекта, если у него изначально должна быть определенная скорость). Ты должен работать с перемещением тел через ApplyForce и ApplyLinearImpulse/ApplyAngularImpulse. Если игрок должен подпрыгнуть - ты прописываешь ему импульс вверх. Движение влево/вправо - скорее всего сила направленная в нужное направление. Скорее всего потому что сила/импульс в некотором роде взаимозаменяемы - силу можно заменить последовательностью импульсов. Конкретный результат зависит и от параметров сцены, нужно пробовать разные варианты и смотреть что получается.
912738
#223 #912738
>>912633
Спасибо анон. С помощью импульсов удалось решить последнюю проблему. Теперь осталась вторая, ведь персонаж летать влево-вправо не должен. Если вверх это решается простой проверкой вертикальной скорости, то как быть влево-вправо?
912746
#224 #912746
>>912738
Что значит "персонаж летать влево-вправо не должен"?
912752
#225 #912752
>>912746
Персонаж по нажатию W подлетает вверх (прыгает). И если зажать после прыжка A или D, то персонаж застынет в положении, и начнёт постоянно двигаться в сторону нажатой кнопки (A - влево, D - вправо), и по-чуть чуть падать на поверхность под действием гравитации.

Мне нужно чтобы такого нельзя было сделать, так как так можно спокойно перелетать через дыры и препятствия, просто встав на самую высокую точку, на которую можно запрыгнуть.
912774
#226 #912774
>>912752
Нужно с коллизиями разобраться. Нажатия кнопок A и D обрабатываешь только если персонаж стоит на поверхности. И застывать никто не должен, если ты не вручную скорость выставляешь. При нажатии A/D или силу прикладывай или периодически импульсами подталкивай.
912854
#227 #912838
Чем на машиином уровне отличаются невиртуальные/виртуальные/pure ? (сравнительно насколько много нужно сделать шагов для вызова функции)
912845912846
#228 #912845
>>912838
Учиться надо во время семестра, а не на сессии.
912866
#229 #912846
>>912838
Гугли v-table
912866
#230 #912854
>>912774
Кстати вопрос: что лучше, ApplyForce или ApplyLinearImpulse? Последние доки по Box2D которые я нашёл были за 2013 год, и там даже нет упоминания булевого аргумента wake, который передаётся в этот метод.
912869
#231 #912866
>>912846
Спасибо.
Еще такой вопрос, возможно ли отслеживать вызовы из виндоконсоли и винапи функции?
Знаю, что второе можно сделать http://www.rohitab.com/apimonitor , но не знаю как ? инжектить в виндодлл .
Интересует именно момент между самим вызовом программы (или прямо перед ним) и местом, когда эта программа может почистить логи/прочее.

>>912845
Лол, если бы только мне подобные вещи рассказывали, а не как оптимизировать сборщик мусора.
#232 #912869
>>912854
Если тебе нужно постоянное воздействие на тело то используешь силу. Если короткое - импульс. А так-то они связаны между собой и фактически взаимозаменяемы (при дискретных расчетах). Сила - скорость изменения импульса точнее скорость изменения импульса равна сумме действующих сил. Силу можно представить как импульс который повторяется на каждом шаге. Импульс можно представить как силу которая действует только один шаг.
#233 #913116
Вроде везде написано что альтернативные операторы (and, not, or...) в C++ уже доступны по умолчанию и не требуют включения заголовка <ciso646>, хотя у меня без включения заголовка альтернативные операторы не работают, можете что подсказать, у вас они работают?
913119913171913523
#234 #913119
>>913116

>везде написано


Где написано?

>уже доступны по умолчанию


Где доступны?
И чем && || не устраивают?
913122913171
#235 #913122
>>913119
В общем я думаю они только в Visual studio не работают.
#236 #913150
Поясните зачем нужен виртуальный деструктор, вернее есть ли случаи когда его не делают?
913192913521
#237 #913161
Какую IDE юзать? VS не запускается, Dev-C++ имеет разъебанные заголовочные файлы, Code::Blocks не может найти компилятор при создании проекта. Присматриваюсь к Эклипсу, как он вообще?
Что примерно я должен знать, чтобы хотя бы кодить джуном за еду?
Заранее спасибо.
913170913177913181
#238 #913170
913177
#239 #913171
>>913116

>у вас они работают?


Да.
>>913119

>И чем && || не устраивают?


Ты бы ещё иероглифами писал.
913202
#240 #913177
>>913170
>>913161
Emacs на самом деле Qt Creator
#241 #913181
>>913161
Nano. Еще можешь посмотреть acme, оче годно.
#242 #913192
>>913150

> когда его не делают


Если при разработке класса решают что его не стоит наследовать (либо полиморфно использовать) то виртуальный деструктор не делают, чтобы сэкономить память и процессорное время. В STL много классов без виртуальных деструкторов - все контейнеры, например.
#243 #913202
>>913171

>Ты бы ещё иероглифами писал.


Всю жизнь так писали и не жаловались.
#244 #913203
Можно ли как-то сделать чтобы параметры функции могли принимать только чётные значения?
913223
#245 #913223
>>913203
Нет. Проверять можно constexpr, а параметры ими быть не могут. Можно использовать параметр шаблона вместо параметра функции, но не думаю чт ов такой хуите может быть смысл.
#246 #913228
Бля, аноны, выручайте. Уже час ебусь, понять, что тут за хуетень происходит, я не в силах:
В общем, имеется кусок кода, вот по этой вот ссылочке http://pastebin.com/CNU0dZ4S . В общем-то, проблем, как мне кажется (во всяком случае, как мне казалось до этого времени), в нем возникнуть не может ну вообще никак. На обнуление указателя проверяю, в общем, вроде как, все ОК.
Захожу, я значит, посмотреть, что тут, да как. И, вжух, получай SEGFAULT, петух (угадайте, пока что на какой строчке).
В общем, если вы подумали про цифру 8, тогда я вас обрадую. Так оно и есть. Однако, меня беспокоит то, каким вообще макаром это произошло.
Думаю, так так так, может какую хуйню творю (с чем черт ведь не шутит), захожу в отладчик. И что же я вижу там:

>> layer : 0x16b7bf0


>> m_terrainLayer : 0x16b7bf0


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

>> tileSet : 0x1


Какого черта. Почему она туда указывает?! Ладно, едем дальше, прохожу уже в этот самый "злополучный" метод, и что - а вот нихуя там, он просто возвращает protected-переменную. Все, ничего больше. Притом, что переменная внутри в нормальном состоянии, нихуя не 0x1, как это у меня пишется в отладчике каждый раз. Что за поебистика такая?! Или я в глаза ебусь...
913233
#247 #913233
>>913228
Почему ты решил что проблема в языке? Может у тебя с фреймворком проблемы? Например ты неправильно проинициализировал переменную на которую указывает layer, и проинициализировал хуитой которую к текущему моменту уже удалили.
913235
#248 #913235
>>913233
Нет. В том то и дело, что все нормально и в других местах у меня стоят ассерты на случай косяков обнулений.
У кокоса автоматическое освобождение ресурсов в конце рабочего цикла при обнулении счетчика указателей на объект, но это все дело происходит еще до всевозможных чисток.
Алсо, отладчик считывает область памяти, на которую указывает объект, в том числе и внутренние значения, только вот возвращается почему-то хуйня.
913238
#249 #913238
>>913235
Вот лог GDB для понятности

>>(gdb) step


>>cocos2d::TMXLayer::getTileSet (this=0x1681a90) at /home/%USERNAME%/AndroidStudioProjects/Game/cocos2d/cocos/2d/CCTMXLayer.h:237


>>237 TMXTilesetInfo getTileSet() const { return _tileSet; }


>>


>>(gdb) print _tileSet


>>$3 = (cocos2d::TMXTilesetInfo ) 0x1681750


>>


>>(gdb) step


>>PhysicsProcessorPrivate::setTerrainLayer (this=0x1679260, layer=0x1681a90) at /home/%USERNAME%/AndroidStudioProjects/Game/Classes/src/PhysicsProcessor.cxx:31


>>31 if (tileSet) {


>>


>>(gdb) print tileSet


>>$4 = (cocos2d::TMXTilesetInfo *) 0x1

913251
#250 #913251
>>913238
Ну смотри. Я дописал к твоему коду еще хуйни, чтобы он запускался http://ideone.com/YKKUnW И твой код отрабатывает нормально. Следовательно проблема где-то в другом месте.
913715
#251 #913394
Снова привет программач.

Собственно вопрос: есть ли кроссплатформенный вариант для того, чтобы получить список файлов? Вполне сойдёт какая-нибудь мелкая библиотека (но только не какой-нибудь Boost).
913512914105
#252 #913439
Какие в теории могут возникнуть проблемы при использовании в gcc/msvc либ, скомпиленных в msvc/gcc ?
И есть ли разница в проблемах между .lib и .dll ?
913516
#253 #913512
>>913394
Внезапно, именно boost.
Ну или его младший брат poco
914105
#254 #913516
>>913439
У тебя не слинкуется C++, ибо манглинг? Или этого тебе не достаточно?
913543
#255 #913521

>>>>913150


Единственное зачем нужен виртуальный деструктор - это полиморфизм. Т.е. если ты будешь хранить объект ыпо ссылке/указателю на базовый тип. В этом случае тебе надо быть уверенным, что при delete разрушение начнётся с последнего потомка, следовательно деструктор должен быть виртуальным
#256 #913523
>>913116
Это ж old-way C-style операторы, не? Они как-бы есть для совместимости.
2780 Кб, Webm
#257 #913531
>>912445
На разных. Самые упёртые неудачники - когда им при найме поводят хуями по лицу и скажут, что макака способна на большее.
#258 #913543
>>913516
У меня все линкуется, просто вспомнил, что когда-то использовал в Qt под mingw либы буста, скомпиленные в студии (boost::bind).
И тут возник вопрос, существует ли этакая привязка, типо, скомпилил либы в студии - пользуйся в студии?
913582
#259 #913582
>>913543
Там не к IDE привязка, а к компиляторам.
https://en.wikipedia.org/wiki/Name_mangling
#260 #913625
Программач, есть ли лучший вариант чем та китайщина, что я сделал?
TinyXML2
save.LoadFile("./saves/slot.xml");
XMLElement saveNode = save.NewElement("Save");
XMLElement
slotNode = save.NewElement("Slot");
XMLElement nameNode = save.NewElement("Name");
XMLText
nameText = save.NewText("");
XMLElement dateNode = save.NewElement("Date");
XMLText
dateText = save.NewText("");
XMLElement progressNode = save.NewElement("Progress");
XMLElement
scoreNode = save.NewElement("Score");
XMLText *scoreText = save.NewText("");
save.LinkEndChild(saveNode);
saveNode->LinkEndChild(slotNode);
slotNode->LinkEndChild(nameNode);
slotNode->LinkEndChild(dateNode);
slotNode->LinkEndChild(progressNode);
progressNode->LinkEndChild(scoreNode);
nameNode->LinkEndChild(nameText);
dateNode->LinkEndChild(dateText);
scoreNode->LinkEndChild(scoreText);
save.SaveFile("./saves/slot.xml");
#261 #913715
>>913251
Короче, упростил код до безумия.

>> auto map = cocos2d::TMXTiledMap::create(filePath);


>> auto layer = map->getLayer("terrain");


>> auto tileset = layer->getTileSet();



Все равно tileset указывает на адрес 0x1. Притом, что map и layer в нормальном состоянии...
913721
#262 #913721
>>913715
Пиздец.
Видать то-ли CMake, то ли GCC блядствовали. Удалил папку сборки и собрал сново - и теперь заработало. Но ведь исходники не поменялись...
913933
#263 #913933
>>913721

>Удалил папку сборки и собрал сново - и теперь заработало. Но ведь исходники не поменялись...


https://www.youtube.com/watch?v=CA5tBKSccuw
111 Кб, 600x450
!MrGayZn1n. #264 #913940
Возможен ли геймдев с такого ide, как Dev++?
913945
#265 #913945
>>913940
У меня как-то получается. IDE как IDE.
Просто я с другими не работал никогда.
24 Кб, 480x360
#266 #913952
VS пишет: uuid не найден, как ему помочь его найти? Запускаю из консоли.
#267 #913979
Мемоизация от слова мем.
#268 #914105
>>913394
Этот анон >>913512 тебя плохому научит, юзай https://github.com/cxong/tinydir или вообще fstat обертки для винды. Если у тебя в проекте до сих пор нет буста, значит он тебе не нужен.
914115
#269 #914115
>>914105
Я этот ебучий буст пытаюсь уже целый день сбилдить. Пиздец.

Анон, спасибо тебе за полезную либу.
#270 #914131
Хочу вкатиться в программирование, но боюсь...
914143914144
#271 #914143
>>914131
Нахуй тебе плюсы, это язык для бывалых боевых пидарасов, для спецназ-элиты, почти как 1С. Вкатись лучше в ПЕТОН.
914146
2219 Кб, 320x240
#272 #914144
>>914131

>Хочу вкатиться


> С++ тред



Оно тебе надо? Иди к жабоскриптерам лучше
914146
#273 #914146
>>914144
>>914143
Хочу писать свои игры, вот для чего. Но не на готовых движках, а хочу сделать простейшее говно, но понимать как оно работает и отталкиваться от этого.
#274 #914150
>>914146
Так бери и вкатывайся, хули ты боишься, она не сожрет тебя
914151
#275 #914151
>>914150
Напиши тогда рогалик на питоне. ncurses все дела. Потом перепишешь на плюсах, если понравится.
914160
#276 #914156
>>914146
Проиграл. Сам сейчас этим занимаюсь.
#277 #914160
>>914151
Зачем curses? Для рогаликов есть libtcod, оно и с крестами работает и с пайтоном.
#278 #914162
>>914146
Лол, да уж тож такой хуитой тсрадаю пизда нихуя не выходит уже год ебу плюсы опенгл, сложно
914648
#279 #914165
>>914146
На, тогда, список литературы на лето, изучай:
http://mrelusive.com/books/books.html
https://github.com/miloyip/game-programmer
Книжки с первой ссылки подустарели, но пусть будут.
914175914648
#280 #914175
>>914165
да даже если брать по одной книге из раздела, то первую игру он напишет лет в 80
#281 #914212
>>914146

>но не на готовых движках


>писать игры, даже не одну игру, а игры


Ты болен. Освой Unity и не перфекционируй.
914382
#282 #914273
ну че, вкатывальщики, когда на собес?

Опыт от 5 лет в области системного программирования и секьюрити ресерч (очень желательно желательно),
Полное понимание архитектуры windows (x86/x64) и стека протоколов TCP/IP.
Обязательные знания механизмов антиотладки, антиэмуляции, PE формата. Опыт реверсинга.
Умение разбираться в недокументированном коде. Написание адекватного документированного кода.
OS: Windows. Отличное знание архитектуры Win32 - объекты ядра, процессы/потоки, синхронизация, виртуальная память и адресное пространство процесса, механизмы IPС, code/DLL injection.
Знакомство с книгами Руссиновича, Рихтера и другими профильными источниками.
Понимание отличий Win64 от Win32, WOW64.
Языки, технологии, библиотеки: С++, С++11, 386 assembler, MASM, FASM, STL, boost, Native API, Win API, BSD sockets, WinSock, CMake
Отладчики, дизассемблеры: IDA Pro, OllyDbg, Immunity, WinDbg, Понимание remote debugging
IDE и тулзы: VS 2013-2015, Subversion / Git, Redmine
Возможность полной концентрации на достижении результата в реальные сроки, отсутствие отвлекающих жизненных проблем (дети, болезни и т.п.)
Дополнительно:
Знакомство с форматами файлов PE, COFF.
Знакомство с разработкой драйверов, понимание отличий работы в kernel/user mode.
Криптография - хэши, симметричные алгоритмы, public key cryptography, digital message signing.
* FreeBSD, Linux, Shell scripting (bash, csh).
#283 #914382
>>914212
Поциент у вас рак Юнити головного мозга, срочно пройдити в хоспис для дальнейшего домирания, не мешайте здоровым людям.
#284 #914383
>>914273
Ищут ноулайфера который с 3х лет под спидами, ковыряет шиндоус и плюсы?
#285 #914384
>>914273
Одно радует что никого они ненайдут. Их бизнес загнется без такого важного человека, и на сео этой шараги повиснут многомилиардные штрафы за проебаные проекты. У него отнимут все его деньги хаты машины, жена бросит его отобрав еще часть бабла, постоянно будут обоссывать колекторы, и сдохнет в выгребной яме зимой набухавшись и замерзнув насмерть.
914709
#286 #914386
>>914273
Забыл добавить зп 300к/cек
#287 #914500
Вечер в хату.
Кто-нибудь htmlcxx пользует?
914516
#288 #914516
>>914500

>Кто-нибудь htmlcxx пользует?


нет
#289 #914549
Анон. Вот сижу, и туплю:
Вот есть метод, выводит список файлов, и с этими файлами надо работать. Вот например надо вывести в какое-нибудь место название одного из файлов.

Это мне весь вывод метода в массив закатать, или как?
#290 #914563
>>914273
Лол, это же я без пары пунктов.
Только мне не впёрлись эти ребята
914707
#291 #914648
>>914165
Cпасибо, попробую, правда ни на английском.

>>914162
А у тебя контактов или конфы нет? А то 1 всегда сложно и забросишь, а когда есть компания...
#292 #914707
>>914563
чувак, не пизди, умерь амбиции
по требованиям им только руссинович подходит
914728
#293 #914709
>>914384
ну да самом то деле какую проблему я вижу с этой вакансией:
им надо уточнить, кого конкретно надо - кодера или реверсера
так же надо уточнить, кодер нужен "ядерный" или все же это будет прикладник в юзерспейсе
тк универсальных людей нет, особенно под винду
#294 #914714
>>914273
Что за проект? Пишут ядерный руткит для ФСБ, чтобы ставить на компы подозреваемых в педофилии? Нахуя антиэмуляция, лол?
#295 #914728
>>914707
Я не собирался пиздеть или пытаться как-то похвалиться. У меня образование в сфере защиты информации часть с реверсом и подобным я знаю с университета, а работаю в ортогональной сфере, но в силу некоторых причин более или менее знаю шинводс кернелс
914732914733
#296 #914732
>>914728
Т.е. понятно, что я не подхожу под эту "вакансию"

> Опыт от 5 лет в области системного программирования и секьюрити ресерч (очень желательно желательно),


#297 #914733
>>914728
Сколько платят?
#298 #914848
Прогаю в удовольствие на дельфи
Очень надо Bullet physics, а под c# его никто не курит.

Неужели кресты???...
914854
#299 #914854
>>914848
Возьми кресты. Тут есть божественный Box2D.
914856
#300 #914856
>>914854

>Box2D


Дык и Буллет есть и не пытайся тралить
Всё годное написано на крестах
#301 #914896
Программач, поясни по хардкору за полиморфизм. Есть вот такой цикл:
for (int i = 0; levelNameVector.size() > i; i++)
{
tgui::Label::Ptr emptySaveTitle = std::make_shared<tgui::Label>();
emptySaveTitle->setPosition(135, 92);
emptySaveTitle->setTextSize(22);
emptySaveTitle->setText(levelNameVector);
gui.add(emptySaveTitle);
}
Его суть в том, что я получаю список имён, и каждый раз при проходе цикла рисую тайтл средствами одной библиотеки (надо ещё и положение менять при каждом проходе, да). Я подозреваю, что здесь нужно как-то генерировать название объекта каждый раз, но как - я не знаю.
914901
#302 #914901
>>914896
Полиморфизм чего?
914902914905
#303 #914902
>>914901
Ну как бы или класса, или функции. Нужно, чтобы экземпляр типа tgui::Label::Ptr имел уникальное имя. Я уже сам запутался.

Сойдёт даже если просто будет добавляться счётчик к названию экземпляра при каждой итерации цикла.
914906
#304 #914905
>>914901
всево))
#305 #914906
>>914902
Запихивай их в контейнер и не еби мозг
914912
#306 #914908
Такой код:

class Mister{
public:
void foo(){}
};

class Proper: public Mister{
public:
void foo(int a){}
};

Если мы создадим объект Proper object, то вот так сделать нельзя: object.foo() .

Вопрос : какого хуя?
Почему компилятор не может просто пройти по базовым классам и выбрать подходящую по прототипу функцию.
914910914917
#307 #914910
>>914908
Он может. Такая хуита называется перегрузкой. У тебя какой-то неправительный компилятор. Либо я тупой.
914915
#308 #914912
>>914906
Можешь показать на примере? Даже если я функцию отрисовки в том цикле засуну в какой-нибудь класс.
#309 #914914
>>914273

>Полное понимание архитектуры windows (x86/x64)


>Полное



Дальше не читал
914916
#310 #914915
>>914910

>Либо я тупой.


this
914916
#311 #914916
>>914914
В принципе, можно было ещё почитать, и дропнуть после этого.

>Умение разбираться в недокументированном коде.



>>914915
Поясни по хардкору тогда.
914919
#312 #914917
>>914908
Тут перекрытие функций, а не перегрузка
914918
#313 #914918
>>914917
Это понятно. Но они отличаются по набору параметров, какие проблемы поискать дальше по наследованию функцию с корректными параметрами?
914920914935
#314 #914919
>>914916
Дальше совсем пиздец. Набрали в гугле реверс-инженеринг и покопировали разных слов
#315 #914920
>>914918
Это защита для множественного наследования. Так не было бы понятно, какую функцию с нужными параметрами тянуть
914928
#316 #914925
>>914273

>отсутствие отвлекающих жизненных проблем (дети, болезни, друзья, тян)

#317 #914928
>>914920
Но для такой защиты можно сделать один класс виртуальным (Как-то так это делается)
914930
#318 #914930
>>914928
Не ты не понял. Что будет по твоей логике, если я сделаю не виртуальное множественное наследование?
914933
#319 #914933
>>914930
Сделай виртуальным. Его и придумали для решения этой проблемы
914934
#320 #914934
>>914933
Ты можешь сделать не виртуальным, это не запрещено стандартом
#321 #914935
>>914918
СТРАУС выбрал такой способ поиска перегруженных функций - они рассматриваются только из одной области видимости (scope). Когда компилятор встречает функцию он начинает перебирать области видимости, начиная с самых узких, пока не найдет функцию с таким же названием. Потом, исключительно в этой области он ищет функцию с нужной сигнатурой. Ты можешь добавить в область видимости Proper все функции с именами foo из Mister дописав в public разделе объявления класса using Mister::foo;
914954
#322 #914954
>>914935
Есть где почитать о том, почему он принял такое решение?
914972
#323 #914972
>>914954
Design and Evolution of C++ же, офигеная книжка, читается как детектив и нисколько не устарела за 20 лет.
#324 #915022
Есть приведенный ниже код, с помощью которого создается текстовый файл с числовой парой, заключенной в скобки. Как из текстового файла вывести в консоль только числа, разделенные пробелом?

[CODE]
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;

inline void keep_window_open(){
char x;
cin >> x;
}

struct Point {
double x;
double y;
};

int main (){
vector<Point> inputVector;(3);
vector<Point> outputVector(3);
double x, y;
for(unsigned int i = 0; i<inputVector.size(); i++){
cin >> x >> y;
inputVector.x = x;
inputVector.y = y;
}
ofstream ost ("C://log.txt");
for(unsigned int i = 0; i<inputVector.size(); i++){
ost << "(" << inputVector.x << " " << inputVector.y << ")\n";
}
ost.close();
ifstream ist ("C://log.txt");
double number;

keep_window_open();

return 0;
}
[/CODE]
#324 #915022
Есть приведенный ниже код, с помощью которого создается текстовый файл с числовой парой, заключенной в скобки. Как из текстового файла вывести в консоль только числа, разделенные пробелом?

[CODE]
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;

inline void keep_window_open(){
char x;
cin >> x;
}

struct Point {
double x;
double y;
};

int main (){
vector<Point> inputVector;(3);
vector<Point> outputVector(3);
double x, y;
for(unsigned int i = 0; i<inputVector.size(); i++){
cin >> x >> y;
inputVector.x = x;
inputVector.y = y;
}
ofstream ost ("C://log.txt");
for(unsigned int i = 0; i<inputVector.size(); i++){
ost << "(" << inputVector.x << " " << inputVector.y << ")\n";
}
ost.close();
ifstream ist ("C://log.txt");
double number;

keep_window_open();

return 0;
}
[/CODE]
915061915068
31 Кб, 508x705
#325 #915061
>>915022
Лол, часто тут такое?
Мимо новичок С++ тредов
В наказание за то, что ты глупое безвольное создание, которое решило спихнуть свои задачи на других людей, потрать столько же времени на перепечатывание текста, сколько я потратил на твою программу.
Код писал какой-то аутист. Не говоря о неудачных программных ходах, код в принципе не работал
915334
#326 #915068
>>915022
В следующем семестре тебя отчислят, если будешь так же хуи пинать
915334
#327 #915334
>>915061
>>915068
Я только начал изучать плюсы. А код, вероятно, такой несуразный потому, что книгу, с которой я начал свое изучение для начинающих(Programming Principles and Practice Using С++ Строуструпа) и большинство приемов в решении задачи принадлежит автору книги как и задача.
Если эти объяснения не оправдывают "кривоту" моего когда, то какие действия предпринять по отношению к учебному материалу и/или к себе?
Что код нерабочий отправил, и в правду, я виноват.
915456
271 Кб, 1354x663
#328 #915389
Нахуй компилятор запихал мне эти исходники в исполняемый файл?
915402915413
#329 #915402
>>915389
Это не исходники.
915407
#330 #915407
>>915402
Ну я в курсе что этого в проект не писали, но это по определению исходники.
915409
#331 #915409
>>915407
Исходники по определению в файле с исходниками, а не в исполняемом.

А это тупо таблица символов.
915426
#332 #915411
Аноны, откуда у вас знания по стл и всему шаблонному программированию? Я в последнее время вкатываюсь в настоящие кресты от лабораторного си с классами, читаю гайды/приёмы на стек оверфлоу, буст и гайды буста, и у всех есть будто какое-то тайное знание, что прям заебись и сразу выходит годный код. Вы книжки из шапки читаете? Прям на ингрише? Меня заебывает моментально, например.
#333 #915412
>>915411
Джо Саттиса почитай
#334 #915413
>>915389
Вроде какой-то нехитрый флаг не использует символьную таблицу, заменяя своей. И это, наверное, отладочная сборка и нужна для гдб.
915426
#335 #915420
>>915411
Меня тоже заебывать книжки, поэтому нужно писать что-то побольше, и нехватка всего этого сама придет
#336 #915426
>>915409
Нет. Исходники это то что предполагается некорректные исходники тоже исходники компилятор должен схавать. А этот код действительно исходник с++.

>>915413
Отладочная? А почему она по дэфолту?

Что за таблица символов?
915455
#337 #915443
очень простой код http://pastebin.com/0qHgvFXj
CodeBlocks и CLion используют один mingw

ниже сборка/размер/среднее время

CLion - debug -- 2001 KB -- 164.389 ms
CLion - release -- 1939 KB -- 143.948 ms

Code::Blocks - debug -- 2001 KB -- 162.209 ms
Code::Blocks - release -- 914 KB -- 142.278 ms

VS2015 - debug -- 76 KB -- 1463.76 ms
VS2015 - release -- 15 KB -- 408.403 ms

Какого хуя в студии код выполняется в несколько раз дольше? Особенно сборка дебага, я думал, что 0 лишний поставил в количестве итераций.
Какого хуя код из mingw весит столько, можно ли как-то этот размер уменьшить и чего там такого на 2 мб записано? Оптимизации?
#338 #915446
>>915443
Закладки со спайсом
#339 #915448
>>915443

>Какого хуя в студии код выполняется в несколько раз дольше?


Оптимизатор делает сасай.

>Какого хуя код из mingw весит столько, можно ли как-то этот размер уменьшить и чего там такого на 2 мб записано?


Свой сирантайм и прочая гнутая залупа. Убрать зависимости/слинковатьтдинамически/ещё как-то отодрать их каким нибудь спермо-трюком, но работать не будет нигде.
#340 #915450
>>915443
Ну ты тестируешь время выполнения функции которая (скорее всего) зависит от реализации - естественно на разных компиляторах разное время. А размер скорее всего от того что VS код динамически слинкован с каким-то "c++ redistributable". Попробуй свои программки запустить на машине где нихуя нет кроме ос, если есть возможность и желание.
915477
#341 #915455
>>915426

>А этот код действительно исходник с++.


И что ты там видишь кроме типов и имён функций?
#342 #915456
>>915411

> Аноны, откуда у вас знания по стл и всему шаблонному программированию


Писал много программ.

> Вы книжки из шапки читаете


Читал только Липпмана, когда вкатывался в С++ лет 8 назад. Больше не откуда было черпать систематизированные знания или ответы на вопросы.
Потом читал только на инглише всякие специализированные моменты

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

> Страуструп


Я бы не стал с этим Страуструпом кувыркаться. Меня он в самом начале только напрягал, очень туго шло. Вот Липпман другое дело, приятно было читать.

> какие действия предпринять


С практикой всё придёт, просто побольше писать программ.
922812
#343 #915458
Привет снова программач. Я опять выхожу на связь с очередной говнокодерской хуитой:

for (int i = 0; levelNameVector.size() > i; i++)
{
drawLevel->drawLevels(gui, window, i, levelNameVector);

tgui::Button::Ptr levelButton = gui.get<tgui::Button>("selectLevel" + i);
levelButton->connect("pressed", [&](){ loadGame(gui, window, levelPathVector); });
}

Создаю я значит объекты по общему указателю каждую итерацию, привязываю к каждому созданному объекту ивент по нажатию, но вот незадача:

При нажатии на созданную кнопку, приложение крашится. В дебаге видно, что программа пытается обратиться к несуществующей функции. Выходит, что по концу каждой итерации loadGame() уничтожается нахуй. Собственно вопрос: как решить эту проблему?
915460915470
#344 #915460
>>915458
Лол, я хз, конечно, но как насчёт вынести создание кнопки tgui::Button::Ptr levelButton за цикл?
915463915464
#345 #915463
>>915460
Ну там создаёшь массив кнопок, который существует не только на итерации цикла, а всё время существования твоего меню.
915464
#346 #915464
>>915460
И как ты себе это представляешь? Кнопок может быть дохера и больше.

>>915463
Массив кнопок? И к этому массиву обращаться? Сможешь пример сделать?
915469915474
#347 #915469
>>915464
Cудя по твоему описанию и по твоему куску кода, с удалением

> tgui::Button::Ptr levelButton


Может происходить и удаление

> [&](){ loadGame(gui, window, levelPathVector); }



Хотя я пальцем в небо.

> И как ты себе это представляешь?


У тебя этот массив кнопок и так создан, я не внимательно просмотрел, если судить по

> gui.get<tgui::Button>("selectLevel" + i);



Объяви в этом же классе что-то типо
std::vector <tgui::Button::Ptr> levelButtons;

И этот цикл вставь в конструктор класса. Ну или в любое другое место. Основной момент - проверить совпадает ли время жизни levelButton и твоей лямбды/коллбека.
915471915479
#348 #915470
>>915458
tgui::Button::Ptr это shared_ptr. В конце итерации цикла levelButton удаляется нахуй.
#349 #915471
>>915469

>этот цикл вставь в конструктор класса


Только в вектор через пушбек, разумеется, добавляй. Ну ты сам должен понимать, что не просто стрл+С/V должен быть.
#350 #915474
>>915464

>И как ты себе это представляешь?


std::vector <tgui::Button::Ptr> levelButtons;

for (int i = 0; levelNameVector.size() > i; i++)
{
drawLevel->drawLevels(gui, window, i, levelNameVector);

tgui::Button::Ptr levelButton = gui.get<tgui::Button>("selectLevel" + i);
levelButton->connect("pressed", [&](){ loadGame(gui, window, levelPathVector); });

levelButtons.push_back (levelButton);
}
915479915481
#351 #915477
>>915450
Очень глупый вопрос
Чем мне нужно компилировать, чтобы код собирался на любой винде 2000-хр-..-10 без .dll.
Помню тулзы от nirsofta больше 400 кб не весили, и запускались под любой виндой
915486
52 Кб, 734x554
#352 #915479
>>915469
>>915474
Не совпадает, видимо.
915481
#353 #915481
>>915479
Надеюсь, ты не прямо так вставил?
>>915474
915505
#354 #915486
>>915477
Вообще можно, залинковать все статически. Разве что с разными версиями системного апи могут быть проблемы. Кроме VS - у них там все сильно на CLI повязано, хотя может можно и как-то отказаться от использования. Про тулзы от nirsoft не знаю, но они там скорее всего агрессивно WinAPI использовали, тоесть много кода динамически линковано - просто что он в любой виндоуз должен быть. MinGW это какбы исключение. Он действует во вражеской среде, ему нельзя предполагать что у пользователя будут нужные библиотеки, поэтому он дохуя сует в екзешник. Я думаю если программу из >>915443 скомпилить GCC на линуксе, то у нее размер тоже будет небольшим. Если не линковать stdlib статически.
915487
#355 #915487
>>915486
Ну, я это приблизительно так это все и понял.
Вопрос был в том, чем компилить вин приложения и как собирать, чтобы везде запускалось. 2005й редист стоит даже у последнего васяна думаю. нужен даунгрейд студии, вопрос какой
#356 #915491
Подскажите, как лучше всего циклически сдвинуть односвязный список, организованный структурами, на N элементов вправо/влево,
может ему ввести один из параметров - индекс и сдвигать как будто бы это массив?
915500
#357 #915500
>>915491
Нужен двусвязный список, и кроме указателя на голову списка, нужен еще указатель на конец. Потом или голову перемещаешь в конец, или конец в голову, смотря в какую сторону сдвигать.
915503
#358 #915503
>>915500
А что односвязным ограничиться нельзя?
Просто у меня в задании не фигурирует двусвязный.
Там так сказано:Посредством структур реализуйте односвязный список для хранения окружностей. Обеспечьте следующую функциональность:добавить окружность в список;циклически сдвинуть список на N элементов вправо;циклически сдвинуть список на N элементов влево;сохранить данные в файле, считать данные из файла

И еще, как думаешь, достаточно ли просто в начало добавлять элемент? Просто если есть функция, циклически двигающая элементы, то сортировать их по убыванию/возрастанию просто нет смысла
915509915512
#359 #915505
>>915481
Нет, но я видимо не понял, что ты от меня хочешь. Или это так влияют 4 ночи за окном.

Суть собственно в чём: TGUI - библиотека-надстройка над SFML.

Имеется окно SFML, в котором идёт отрисовка и прочее. В этом окне создаётся контейнер TGUI, который у меня зовётся gui, и собственно в нём содержатся кнопочки и прочая хуита.
Вот как выглядит drawLevels:
{
auto selectLevel = std::make_shared<tgui::Button>();
selectLevel->setPosition(72, 90 * (i + 1));
selectLevel->setSize(260, 65);
selectLevel->setText(name);
selectLevel->setTextSize(26);
gui.add(selectLevel, "selectLevel" + i);
}

Чтобы получить доступ к какой-нибудь кнопочке или чему-то, что находится в контейнере, надо взять контейнер.get(название). Оно кстати добавляется путём gui.add(экземпляр, название).
https://tgui.eu/tutorials/v0.7/creating-widgets/
https://tgui.eu/tutorials/v0.7/signals-introduction/
915582
#360 #915509
>>915503
Зацикливаешь список, перемещаешься на N в нужную сторону, разрываешь.
#361 #915512
>>915503
Если нужно именно односвязный то делай его. Просто на нем операции с последним элементом дорогие (линейная сложность вместо константной), и если есть возможность то лучше брать двусвязный. А раз у тебя ничего про сложность не сказано и требуют односвязный то делай с ним. Вставляй в начало, если ничего не сказано, так как это проще всего.
45 Кб, 568x335
#362 #915551
>>915411

а ты думал, прочитаешь "с++ за 24 часа" и будешь матёрым программером?
915721
#363 #915582
>>915505
Это было очевидно по

> gui.get<tgui::Button>("selectLevel" + i);



Самый просто вариант найти ошибку - поставить data breakpoint. Когда у тебя меняется значение по указанному адресу, происходит остановка. Понятно, что это будет в каком-то деструкторе, но хотя бы по стеку вызовов посмотришь, где это происходит.
Data breakpoint ставь на адрес, где хранится

> В дебаге видно, что программа пытается обратиться к несуществующей функции



Если совсем не сможешь разобраться, могу посмотреть через тимвивер, у нас примерно один часовой пояс. Я мог бы посмотреть и просто проект, но не хочу себе ставить библиотеки
915596
#364 #915586
>>915411

>Прям на ингрише?


Без инглиша далеко не уйдёшь. На ютубе тьюториалы еще

>Меня заебывает моментально, например.


Тебя должна вести идея того, что ты хочешь замутить. Если идеи нет или на нее (уже) не стоит, то трудно всегда. Мотмвейшн, нутыпонел
915992
107 Кб, 1510x605
#365 #915596
>>915582
Судя по всему, разобраться не могу. Может пикрил как-то поможет?

Если нет, то давай фейкомыльцо, скину туда пароль и id.
915620
9 Кб, 597x182
#366 #915620
>>915596

> ну ты же не так сделал


> не, не так


> пик


Проиграл.
ostriK&>chisdANUSyandR}:exPUNCTUMr&"]u
Там, походу, минутное дело, но я всё равно смогу только часа через 2-3 или ближе к 00:00. Либо периодически проверяй почту, либо держи тимвивер на готове, а себя около ПК
915621
10 Кб, 620x216
#367 #915621
>>915620
Фикс пика
#368 #915699
Когда выпустят C++17? Когда им можно будет пользоваться на gcc и Visual Studio, знает кто?
915715916766
#370 #915721
>>915551
Я прочитал "C++ за 21 день". Могу ли я уже устраиваться на работу программистом?
915723915840
#371 #915723
>>915721
java джуном можешь
#372 #915840
>>915721
щас не нужны джуны
у фирм зачастую нет ни времени, ни других ресурсов для того чтобы "выращивать" спеца
нужны люди способные сразу писать код, который не будет выброшен
в тоже время в мидах есть необходимость - до сих пор на крестовую мидловскую позицию приходит иногда всего лишь 6-10 резюме (когда на ява-мида может и под сотню прилететь), причем среди них есть абсолютный нерелейтед, те работодателям вообще не из чего выбирать
923596
2 Кб, 768x87
#373 #915984
чому?

#include <windows.h>

int WINAPI WinMain( HINSTANCE _hInstance, HINSTANCE _hPrevInstance, LPTSTR _lpCmdLine, int _nShowCmd) {
int argc = 0;
LPWSTR * argv = CommandLineToArgvW( GetCommandLineW(), &argc);
if (argc > 1)
MessageBoxW(NULL, argv[0], argv[1],
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2);
LocalFree(argv);
return 0;
}
915988915989
#374 #915988
>>915984

>чому?


Антиэмуляцию не сделал.
#375 #915989
>>915984
А, это эвристика. Ну тогда попробую забить сигнатуры ассемблерными вставками с нопами и сделать скрытый вызов функций по хэшу из кернель32.
#376 #915992
>>915586
Дело в том, что в моем понимании "я прочитал кренинбеха" это сесть и начать читать как войну и мир, глава за главой. У меня есть идея, я хочу ее сделать ультракошерной и масштабируемой, но на йоба-приемы и шаблоны натыкаюсь случайно. Сегодня, например, я научился серелизовать структуру, увидев в буст::асио пример с ICMP а вчера я статик-кастом на воид* ее перегонял в чарэррэй. Мне повезло с этим, но тонких мест еще уйма.
31 Кб, 819x538
#377 #916165
нашёл сырцы вот здесь https://github.com/oguna/MMDFormats
в последнем VS компилирует, в code:blocks с пследним mingw пишет:

Pmx.h|526|error: 'unique_ptr' in namespace 'std' does not name a template type

догадываюсь, что дело с компиляторе. Как ему помочь?
#378 #916168
>>916165

>'unique_ptr' in namespace 'std' does not name a template type


#include <memory>
916175
#379 #916169
>>916165
Компилятор тебе строкой выше написал как это исправить, откуда вы блять лезете.
916170916173916176
#380 #916170
>>916169
>>916165
Да, или добавь флаг компилятору, как тот и просит.
916171
#381 #916171
>>916170

>или


Не или, а единственный правильный вариант.
916174
#382 #916173
>>916169

>откуда вы блять лезете


нахуй строем пошёл
916174
#383 #916174
>>916171
Проблема гипотетически могла быть и в особенностях реализации заголовочных файлов между платформами. Нередко же VS отклоняется от стандарта, поэтому могла быть ситуация, когда мемори включался в какой-то другой стандартный головочник, хотя по дефолту такого не должно быть. И китайцы работали в VS.
Ну это я, очевидно, оправдываю то, что я не открыл скрин, а просто прочитал текст поста. А так ты на 99.9 прав

>>916173
Тебе помогают, а ты говоришь спасибо без уважения.
916180
7 Кб, 423x270
#384 #916175
>>916168
уже стоит
916176
#385 #916176
>>916175
Тогда просто сделай как тебе предложил >>916169
Т.е. добавь флаг препроцессора -std=c+11
916177916320
#386 #916177
>>916176

>-std=c++11

916178
#387 #916178
>>916177
Или компилятора.
Не шарю в gcc
916179
772 Кб, 1092x834
#388 #916179
>>916178
В code::blocks можно просто галку поставить.
916180
55 Кб, 779x536
#389 #916180
>>916174
>>916179
спасибо
38 Кб, 844x536
#390 #916181
теперь вот
916182
#391 #916182
>>916181
Теперь давай 14-й стандарт включай (лол).
916185
24 Кб, 872x414
#392 #916185
>>916182
это всё, что есть для этого mingw, что был в пакете с code::blocks
916189
#393 #916189
>>916185
Попробуй -std=c++0x, мб частичная поддержка этого стандарта там есть. Иначе — меняй компилятор или переписывай код.
916190
#394 #916190
>>916189
и с ним та же фигня
посему взад в MSVC

спасибо!
11 Кб, 883x226
#395 #916246
1. Снёс code::blocks, что пришли с mingw
2. поставил MS VS Express 2010
3. code::blocks компилятор видит
4. но всё ещё пытается линковать mingw32.lib, которой так уже не должно и быть!

Какого хера и как подправить?
916252916287917064
#396 #916252
>>916246
Фошизд в треде, все в газенваген.
А на самом деле: покрути настройки в линкере и search directories, наверяка там осталась лишняя строчка.
916269
16 Кб, 766x511
#397 #916269
>>916252
качнул Express с chip.DE же

В файте с проектом эта либа прописана. Уберу прям в редакторе
Помогите найти в опциях. Я в code::blocks второй день
916287
#398 #916287
>>916246
Если ты вот этот вот >>916165 то сноси нахуй и ставь ту, что поддерживает последний стандарт хоть немного (2015-17).
>>916269
Нахуя качать откуда-то кроме как с офф. сайта учитывая что она сейчас полностью бесплатная со всеми нужными фичами есть — хз.
Если проект сгенерировала не сама IDE (т.е. шел с исходниками) то скорее всего никак. Иначе просто сотри и тыкай дальше.
916342
#399 #916320
>>916176

>флаг препроцессора


Ты тоже нахуй отсюда.
916512
#400 #916326
А есть какие-нибудь годные книжки по сетевому программированию?
Есть какие-нибудь менее фундаметнальные книжки, чем Стивенс?
Посмотрел мимолетом пару видео по сокетам,без книжки не разобраться.
916792916795
#401 #916342
>>916287
спасибо за поддержку, в том числе и моральную

Я забил на code::blocks (for a while), поставил VS 2013, в которой писаны те сырцы (VS2015 ведь тоже чего-то в них не находила, блеат).

В VS213 компилирует и слава богу. Я вот этот анон >>323745
Мне внезапно надо из лампового делфи в кресты :3
916344
#403 #916365
Котаны, такой вопрос. Пишу красивый CLI для своего приложения с богатым функционалом и хочу так как красиво как в git'е. Как этого можно добиться? Пока вижу три опции.

1. Руками на основе argc/argv разбираю строку.
2. Использую POSIX-совместимую getopt()
3. Использую расширенный вариант предыдущего функциионала getopt_long().

Хотелось бы узнать, что является best practicies/как сделать поыбстроми, минимизируя число зависимостей. Буст идёт нахуй. Не интересно.

Дублирую вопрос в ните по пюре Си.
916367916430917019
#404 #916367
>>916365
Ссылка на параллельный вопрос.
>>916366
#405 #916430
>>916365
Слишком низкоуровнево мыслишь. См. куда-нибудь в сторону https://github.com/myint/optparse
917007917669
30 Кб, 1090x664
#406 #916512
>>916320

>>флаг препроцессора


>Ты тоже нахуй отсюда.


Но..
Ппц вы недружелюбные
916519916768
#407 #916519
>>916512
И что твой скрин должен мне сказать?
916523916551
14 Кб, 815x446
#408 #916522
Объясните нубусу в крестах, почему public переменные видны в main, но при том, были изменены (длина bones увеличена до 20), в main читаются нулями?

Может, из-за unique_ptr?

>main.cpp


http://pastebin.com/caaNT9MD

>TEST.H


http://pastebin.com/ikQvGf0u
#409 #916523
>>916519

лучше здесь помоги >>916522
916529
#410 #916529
>>916523
Потому что ты, довн, ресайзишь вектор одного об'екта, а смотришь размер у вектора другого об'екта.
916532916582
#411 #916532
>>916529
мамкин погромист LOL
#412 #916536
>>916522
Потому что ты валет.
auto model = Model::Load();
...
model.get().size();
...
916541916579
#413 #916537
Анон, объясни, почему я довен крашит?

Склеиваю стринг из содержимого двух векторов:
for (int i = 0; levelNameVector.size() > i; i++)
{
path = levelPathVector + "/" + levelNameVector;
drawLevel.drawLevels(gui, window, i, levelNameVector, path);
}

Позже передаю эту радость в лямбду.
void SelectLevel::drawLevels(tgui::Gui& gui, sf::RenderWindow& window, int i, string name, string path)
{
selectLevel->connect("pressed", [&](){ loadGame(gui, window, path); });
}

При попытке воспользоваться переменной в лямбде - всё нормально, через cout выводит как надо. Однако стоит воспользоваться ею в нужной мне функции loadGame:
void loadGame(tgui::Gui& gui, sf::RenderWindow& window, string levelPath)
{
cout << levelPath;
}

То приложение просто и понятно крашится.
#414 #916541
>>916536

>model.get().size();


лолшто? хуйню спизднул, не взлетит
916553
#415 #916548
>>916537
Немного перефразирую: почему levelPath возвращается абсолютным нихуя в loadGame()?
916553
#416 #916551
>>916519
Обсуждаемые флаги можно назвать как флагами компилятора, так и флагами препроцессора, потому как последний в любом случае является частью компилятора.
Ну типа preprocessor definitions же написано. PREPROCESSOR. DEFINITIONS. ФЛАГИ. Чё занудничать
916588
#417 #916553
>>916541
У тебя unique_ptr значение как отдаст, довенский хуесос?
>>916537
>>916548
Ну откуда нам знать-то, полный код вкинь. Как ты ее инициализируешь там, с оптимизациями ли компилируешь (и нахуя ты эту строку 3 раза копируешь) — сложна, нихуя нипанятна.
916556916567
#418 #916556
>>916553

>У тебя unique_ptr значение как отдаст, довенский хуесос?



>>916522

>Может, из-за unique_ptr?



давай скорей! Скоро мамка спать погонит
916569
#419 #916561
>>916537

> selectLevel->connect("pressed", [&](){ loadGame(gui, window, path); });


А если вместо path будет какая-то захаркоженная строка? "C:\\my\path\to\file.txt"?
916562916567
#420 #916562
>>916561

>"C:\\my\\path\\to\\file.txt"


846535
#421 #916567
>>916561
"./resources/map/filename.tmx"? Все возвращается как следует, что интересно. Такая строка кстати должна и быть в path.

>>916553
Оптимизаций никаких не стоит.
std::vector<std::string> Stuff::fpathvector(const char* paths)
{
std::vector<std::string> vector;
vector.reserve(fnumber(paths)); // Резервируем вектор в зависимости от числа файлов
for(directory_iterator rdib(paths), rdie; rdib != rdie; ++rdib)
{
std::string StringPath;
StringPath = rdib->path().parent_path().string();
vector.push_back(StringPath);
}
return vector; // Возвращаем вектор
}

Stuff useful;
auto levelNameVector = useful.fnamevector("./resources/map");
auto levelPathVector = useful.fpathvector("./resources/map");

fnamevector делается почти так же, только там именно имя файла забирается.
916577916594
#422 #916569
>>916556
Я ее уже сам спать погнал (твою)
770 Кб, 500x239
#423 #916575
>>916522
бамп вопросу

как переделать сурс, чтобы массив bones был виден в main?
916579916582
#424 #916577
>>916567
На мой взгляд, анонимная функция запоминает не значение, как ты ожидаешь, а адрес переменной. К моменту вызова коллбэка память path уже очищена. Попробуй, например, выделить через new.

void SelectLevel::drawLevels(tgui::Gui& gui, sf::RenderWindow& window, int i, string name, string path)
{
char* ppath = new char [512];
sprintf (path.c_str (), ppath);
selectLevel->connect("pressed", [&](){ loadGame(gui, window, ppath); });
}

Понятно, что тут будет утечка памяти, но мы же просто хотим найти ответ на вопрос.
916579916581916597
#425 #916579
>>916575
я тебе уже ответил конч >>916536
>>916577

>На мой взгляд, анонимная функция запоминает не значение, как ты ожидаешь, а адрес переменной. К моменту вызова коллбэка память path уже очищена. Попробуй, например, выделить через new.


Это вообще было бы очень тупым багом — он переменную вниз по стеку передает, а std::string имеет встроенный рефкаунтер и может удалится только если ее вернуть из функции наверх.
916587916606
#426 #916581
>>916577

>ppath


Хотя если лямбда запоминает адрес, то к моменту вызова коллбэка, опять же, будет запомнен адрес ppath, а сам указатель смоет.
Плохая была идея
#427 #916582
>>916575
я тебе уже ответил конч >>916529
916590
#428 #916585
>>916537
Потому что ты аргумент функции захватываешь в лямбду по ссылке, довн.
916594916597
6 Кб, 551x226
#429 #916587
>>916579

>я тебе уже ответил


не взлетает
916589916593
#430 #916588
>>916551
А теперь притащи сюда скрины вкладок "General" и "Language"
916598
#431 #916589
>>916587
model->get
916592
#432 #916590
>>916582
ты бесполезен
916591
#433 #916591
>>916590
Не проецируй.
11 Кб, 688x293
#434 #916592
>>916589
winrar
ty
916600
#435 #916593
>>916587
Потому что твой код в хидере тоже так же менять надо, ебанутый. Убери уже нахуй unique_ptr, ты не понимаешь что это и тут оно не нужно точно.
916600
#436 #916594
>>916567
>>916585
Этот дело сказал. Проблема правильная была. Попробуй передавать path по значению
selectLevel->connect("pressed", [&, path](){ loadGame(gui, window, path); });
916597916601
#437 #916597
>>916577
В коде твоём была ошибка: [Error] invalid conversion from 'const char' to 'char' [-fpermissive]

>>916585
Ну и как это решить? Взять указатель на path и разименовать его в лямбде?

>>916594
Спасибо анон, проблема решилась. Теперь буду знать.
916601916606
#439 #916600
>>916593

усбагойся >>916592
пользы от твоих вскукареков было много
#440 #916601
>>916597

>Ну и как это решить?


>>916594
916604
#441 #916603
бля чо вы тратите дибилы симены
#442 #916604
>>916601
Да понял уже, и даже поблагодарил того анона. И тебе спасибо тоже, что объяснил по какой причине оно так работает.
#443 #916606
>>916579

>а std::string имеет встроенный рефкаунтер и может удалится только если ее вернуть из функции наверх


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

>>916597

>В коде твоём была ошибка


Идея должна была быть понятна. Я же без компилятора писал, ошибка тривиальная.

sprintf (ppath, path.c_str ());
#444 #916628
Пацаны, зачем вы такие токсичные. Аноны сюда приходят потому что больше не к кому обратиться, а получают вместо кода потоки желчи.
Сравните со stackoverflow
916629916772
#445 #916629
>>916628
Ты бы ещё с ответамcC&иANUSmaW2LilPUNCTUMrco&u сравнил.
916635916637
#446 #916635
>>916629
Мои слова направлены не против особого духа борд и менталитета, а за большее число строк кода в ответах. Чтобы можно было просто вставить и запустить. Так очевидно лучше.
#447 #916637
>>916629
Впрочем, да. Мы же теперь 2uYUchANUSm_8?ailPUNCTUMrfjFu
916639
#448 #916639
>>916637
Ппц не дави на больное...............
#449 #916715
Сап. Пилю бинарный формат. У меня есть куча ключей, на которые мне нужно впоследствии много раз ссылаться. Подумал, что удобнее всего их будет просто проиндексировать и записать в определенном порядке, а при считывании восстанавливать значения индексов просто по порядку. Но что мне не особо понятно, так это то, в каком виде лучше всего записывать эти самые ссылки, т.е. номера индексов далее по "тексту". Есть идеи? Интересует самый компактный вариант.
916761916785
#450 #916761
>>916715
>>916715

>записать в определенном порядке


struct
#451 #916766
>>915699

gcc 7 уже поддерживает все фичи c++17, которые планируют принять в стандарт. собирай его и тести. я сейчас с ним играюсь, даже порнуху некогда смотреть.
#452 #916768
>>916512

виндузятник, который никогда не выходил за пределы своей тёплой и уютной иде, детектед
100 Кб, 400x300
#453 #916772
>>916628

> зачем



а потому что
#454 #916785
>>916715
Очевидный struct с битовыми полями, обернутый в #pragma pack. Но это си, а не цпп. Сделай лучше класс с сериализатором
#455 #916792
>>916326
Бамп вопрос
#456 #916795
>>916326
Таненбаум, Комп. сети. Разжевано вообще все что нужно, не нужно и вообще может пригодится.
#457 #916822
Анон, чому нужно -lpthread для потоков делать в линуксе?
916834
#458 #916834
>>916822
Чтобы линкер знад что часть кода в этой библиотеке.
916837
#459 #916837
>>916834
А если например я использую с++ на арме без линукса, как тогда?
916860916862916968
#460 #916860
>>916837

> без линукса


Никак. phtrhread это системное апи линукса, естественно оно не доступно на других системах, если только они не предлагают свою posix-совместимую реализацию этого апи. Изучи документацию на эту тему к ОС для которой ты пишешь программы.
917096
#461 #916862
>>916837
me just curious: bare metal ARM??
#462 #916968
>>916837
тебе какбэ намекают что нужно написать функции поддержки многопоточности
посмотри лучше откуда потребность в них вылезла (дизасмом например) и может быть можно что-то придумать

P.S.

>с++ на арме


не забывай про горы говносборок компиляторов в интернетах: https://andriidevel.blogspot.com/2016/05/size-cost-of-c-exception-handling-on.html
917050
#463 #917007
>>916430
это заебись! А ещё? что-нибудь сишечка-лайк или как click в петне
#465 #917050
>>916968
Почему тогда в cpp11 поддержка потоков? Поддержка же в pthread, цпп просто использует фреймворк
917054
#466 #917054
>>917050
Потому что в 11-х плюсах это просто спецификация, которая реализовывается на каждый платформе силами её разработчиков.
#467 #917064
>>916246
Хуле ты паришься, ставь Gentoo.
#468 #917096
>>916860

>phtrhread это системное апи линукса


Системное апи линукса это clone
#469 #917295
Почему вместо 0x20 я получаю рандомный мусор?
917296917373
35 Кб, 843x318
#470 #917296
917306
#471 #917306
>>917296
Оххх, порядок байт другой.
#472 #917373
>>917295
Почему в C++-треде вместо нормальных срачей я получаю рандомный мусор?
917398
#473 #917398
>>917373
Потому что у вас big endian
#474 #917470
Нужно в большую строку ( файл 10 мб ) добавить с разных сторон много небольших строк.
Как это лучше сделать в с++03, ибо после всех .append(..) в памяти процесса под 100 мб.
917482
#475 #917482
>>917470
Просто .reserve () заранее сделай на 10 + N мегабайт.
#476 #917513
Возможный вариант с временным файлом. Записываешь туда сначала начальные строки, потом копируешь исходный файл с помощью splice() (в линуксе, на виндовс вроде TransmitFile можно использовать) потом вписываешь остальное. Заменяешь иходный файл временным. Но хуй знает что получится, и в любом случае от оборудования зависит - если он оне поддерживает DMA то смысла нет так заебываться. Разве что нужно любой ценой оперативную память экономить.
#477 #917526
Аноны, либу State Threads можно с крестами использовать?
917536
#478 #917536
>>917526

Нет нельзя. Только с сишечкой.
917553
#479 #917553
>>917536
Спасибо, анон. А если резервировать память под объект с помощью malloc, то на объекте потом как-то можно конструктор запустить? Boost же как-то реализует пулы (я даже код смотрел, там пулы по sizeof распределяются), неужели на массиве объектов сразу конструкторы запускаются?
917562
sage #480 #917562
>>917553
Можно. placement new используй
917569
#481 #917569
>>917562
Спасибо, анон.
#482 #917669
>>917019
>>916430
Спасибо, котики! Накидайте ещё годных репозитариев или профилей. Рад видеть, что здесь не только школьники сидят
917671917673
#483 #917670
>>917019
Сэйлормун собирает с помощью вот этой штуки
https://pypi.python.org/pypi/bfg9000/

А чем его обычный cmake не устроил? Это ведь стандартно, удобно, распространнено.
917703
#484 #917671
>>917669
Ого! Что нашёл всё у той же членодевки
https://github.com/sailormoon/single_file_libs
#485 #917673
>>917669
Чтобы здесь не флудить отпишитесь на почту ivanegobL%rov025ANUSg,b,mailPUNCTUMcoCA4m лады? Есть к вам парочка подаванских вопросов как к людям в теме.
917689917909
#486 #917689
>>917673
Отписался тебе за щёку.
#487 #917703
>>917670

>стандартно, удобно


Стандарта в плюсах на эту тему нет, а цмейк нихуя не удобный, так ещё и тормозит похлеще обычного make и всякого питоноговна.
917800
#488 #917759
>>905086
пиздец. Узнал себя. Как перестать быть байтоёбом с завода?
917768
#489 #917768
>>917759
Сменить предметую область и начать писать код который будет работать и который можно будет поддерживать, а не экономить везде на двух инструкциях.
#490 #917800
>>917703
Чё бля? CMake использует некоторый бэкэнд, который уже и выполняет сборку. И чем это тебя обычный make не угодил? Или блять хочешь писать m4-макросы и autoconf-скрипты, сука?
917837
#491 #917837
>>917800
Ты в каком году? В 92-м?
А цмейк просто тугое кривое говнище, сделанное какими-то гидроцефалами. Причём во всех отношениях.
917906918164
#492 #917906
>>917837
нет у ней альтернативы
если надо кроссплатформу, то проще cmake использовать, чем тащить в исходниках проекта кучу проектных файлов различных версий visual studio и кучу сборочных скриптов под юниксовые операционки
918027
#493 #917909
>>917673
чувак
это анонимная борда если что
918166
#494 #918027
>>917906
Ты какой-то пещерный человек, ей богу.
#495 #918140
Знание OpenGL - полезный навык для C++-ника в целом?
Уволился вот со скучной работы, связанной с формошлепством на Qt, во время передышки перед поиском новой работы хочу бустануть свое, так сказать, "резюме" не в обычном понимании, а скорее в виде набора скилов которыми я располагаю, и мне интересно, насколько целесообразно заморочиться 3D-графикой в целом и OpenGL в частности.
В качестве плюсов можно считать возможность вкатиться в геймдев и смежные области, из минусов - возможна дополнительная нагрузка в виде повторения мат анализа, на который я очень успешно забивал болт во время учебы в университете.
Что посоветуете?
#496 #918147
Посоветуйте IDE под Windows с компилятором
Qt creator имеет свой? Или это только оболочка?

Охота что-нибудь полегче
918151
#497 #918151
>>918140

>В качестве плюсов можно считать возможность вкатиться в геймдев


/0
Давно таких не видали дуралеев.
>>918147
Давай хаскель лучше кчин, он как раз для новичков.
Список IDE для плюсов с описанием можешь найти в шапке.
#498 #918152
>>918140
OpenGL или нужен или нет. Если вакансия не под ожл разработчика то пользы от его знания мало будет. Матан не нужен, ты возможно с линалом перепутал. Но линал для изучения тоже не нужен. Если хочешь базвордов в резюме накинуть, то возможно лучше за OpneCL (или CUDA) возьмись, если не владеешь. Это в принципе тоже достаточно специализированная тема, но выглядит более широкой. Потом можно уйти в digital signal processing, например.
#499 #918154
>>918151

>>Давай хаскель лучше кчин, он как раз для новичков.


Но я уже год пишу хелоу ворлд на С++
#500 #918157
>>918151

>>Qt creator имеет свой? Или это только оболочка?

918167
#501 #918164
>>917837

> Ты в каком году? В 92-м?


Initial release2000; 17 years ago
918167
#502 #918166
>>917909
Ебать вы аутисты, это же фейкопочта. На самом деле я Анатолий Сердюков и работаю в гугла эйчаром.
#503 #918167
>>918164
Ну тебе хоть есть чем оправдать глупость. В отличие вот от таких тугосерь >>918157
918209918449
#504 #918209
>>918167
Ты жизнь обиженный
918222
#505 #918222
>>918209
Мой жизнь жыл
Твой нет
Сасай
#506 #918281
>>918151

>>В качестве плюсов можно считать возможность вкатиться в геймдев


>/0


>Давно таких не видали дуралеев.


Что не так? Объясни
918298918438
#507 #918298
>>918281
>>918151 - он из этого треда >>918030
#508 #918420
>>918140

>Знание OpenGL - полезный навык для C++-ника в целом?


полезный. У меня скоро будет проект на опенгл негеймдев (рабочее место диспетчера)
#509 #918438
>>918281
Самая нищенская и одновременно больше всего (по времени) требующая область.
Суть как бы в том, что там конкуренция из сотен макак, готовых переезжать в ебеня вроде Новосибирсков и Харьковых, за зарплату 60к рублей за идею и отечественный геймпром, что называется.

Ну удачи короч
918622
135 Кб, 501x315
#510 #918449
>>918167
Путаешь глупость и незнание, дурашка.
Посмотри на Git. Линус ссал тебе наебало make'ом(sic!)
https://github.com/git/git/blob/master/Makefile
918498
#511 #918463
У меня мистическая хуйня на винде, я, прямо, кирпичами сру.
Играюсь немного, в общем, сервис создает папку в %SystemRoot%/windows32, копирует туда себя и прописывается через CreateService, понятно уже, что это
Так вот, на одной машине папка не создается, соответственно, все остальные действия должны возвращать ошибку.
Но нет. Я ебу что это. Сервис записан в /CurrentControlSet на несуществующем пути, и мало того, что работает, так еще, блядь, функционал поддерживает полностью (стоп\пауз\старт)
Обыскал все папки винды, перезагружался несколько раз.
КАК ОН МОЖЕТ СУЩЕСТВОВАТЬ
ЧТО ЭТО ЗА НАХУЙ
918469
#512 #918469
>>918463
upd
Исследование показало, что данным свойством обладает лишь папка system32.
Можно создать папку там через CreateFolder, скопировать файлы через CopyFile, и даже запилить там сервис, однако после этого получить доступ в эту папку будет нельзя, причем можно создать папку с таким же названием и конфликтов не будет.
Причины и объяснение данного феномена мне все еще неизвестны
918509
#513 #918498
>>918449

>Линус ссал тебе наебало make'ом(sic!)


>2,5 к рукописных строк мэйкфайла с говном из баша


>которые в нормальной системе сборки можно было уложить в 100


Ну да, есть такое. Копрофилия — оно у плюсовиков наследственное от сишников.
918505
#514 #918505
>>918498
Ахуеть, уложишь в 100?
#515 #918509
>>918469
Я не помню, как называется эта фича, но её придумали мелкомягкие, когда хорошенько соснули DLL hell'а. Суть в том, что если приложение, не являющееся TrustedInstaller'ом, пытается срать в системные папки своими библиотеками и прочим, то на самом деле файлы попадают в отдельное хранилище для этого приложения и не видны никому другому. Что-то вроде overlayfs для каждого отдельного процесса, короче.
#516 #918517
В xp (может и не только) сессия админа (именно админа, а не пользователя с админ правами) имеет пид 0, соответственно запустить приложения под его именем нельзя, запускаются под 0й сессией.
Можно ли как-нибудь выдрать токен пользовательской сессии адмиистратора?
#517 #918584
>>904165 (OP)

>C++


Qt Creator/Designer/CodeLite/Code::Blocks/Clion
и почему? Выбираю строго из перечисленных вариантов, остальные по тем или иным причинам не доставили.
918620
#518 #918620
>>918584
Зависит от предпочтений. Попробуй все, выбери себе.
Унылосрачи не нужны
918634
#519 #918622
>>918438

> Харьковых


Я и так в Харькове живу :(
#520 #918634
>>918620
Я не хочу срач. Ну, подскажи плюсы-минусы. Лион должен быть самым интеллектуальным, если судить по Идее, но хз, выглядит каким-то слишком громоздким. Писать планирую с активным использованием Кьюта либо что-то простое для Ардуинки.
918688
#521 #918667
>>918140
матанализ тебе не нужен
нужны будут матрицы и квартенионы для всяких 3д преобраований, немного школьной физики (если не будешь лезть в имплементации физ движков), пройди какойнибудь курс по алгоритмам на курсере

в харьков гейдев - пайпстудия берет вобще всех но платит нихуя, есть g5, gameloft, plarium это из крупных,еще с полсотни мелочи, лучше какимто чудом найди постоянную удаленку, но практически нереально если ты не сениор\лид с хуевой тучей проектов за плечами

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

мимо 10 лет в геймдеве
918777918864
#522 #918688
#523 #918777
>>918667
Вам стажеры не нужны, лол?
918817
#525 #918817
>>918777
Стажёры вообще никому не нужны.
#526 #918864
>>918667
Миша, это ты?
918925
sage #527 #918866
Ёбаны в рот, не все же на .HK сидят.
>>894904 (OP)
>>894904 (OP)
>>894904 (OP)
>>894904 (OP)
>>894904 (OP)
919069
#528 #918925
>>918864
нет
#529 #919069
>>918866
>>918788
Вы куда перекат-то делаете, гады?
#530 #919107
std::ifstream in;
in.open(_in.c_str(), std::ios::in | std::ios::binary);
std::ofstream out(_out.c_str(), std::ios::out | std::ios::binary);
char buffer[64];
while(in.read((char )&buffer,sizeof(buffer)))
out.write((char
)&buffer,sizeof(buffer));
in.close();
out.close();

Вот код копирования бинарных файлов, почему он работает?
Всмысле, в конец файла с вероятностью 63/64 будет записываться хотя бы один лишний байт.
Причем, если делать проверку на EOF, то окажется, что такие чары есть и внутри файла
Как вообще определяется еоф в бинарных файлах?
919108919123919624
#532 #919123
>>919107

>Как вообще определяется еоф в бинарных файлах?


Как и в любых других.
Операционная система точно знает размер файла, не никаких EOF сигнатур
919125919128
#533 #919125
>>919123

> нет никаких

919128
#534 #919128
>>919123
>>919125
Тогда почему код копирует содержимое 1 в 1, без единого лишнего байта, хотя должен копировать по 64 символа за итерацию.
919177
#535 #919177
>>919128

>должен копировать по 64 символа за итерацию


Код должен копировать до '\0'.
Если у тебя буфер на 5 символов, то при прочих равных и корректных у тебя будет скопировано 4 символа.

char buf [5] = {'k', 'o', 's', 't', '\0'}. // скопируется только "kost".
919178919182
#536 #919178
>>919177
char buf [99999999] = {'k', 'o', 's', 't', '\0', 'y', 'l', 'i'}. // так тоже скопируется только "kost".
919182
#537 #919182
>>919178
>>919177
Не посмотрел, что ты через sizeof пишешь.
919187
#538 #919187
>>919182
Да дело даже не в этом. Я просто несколько сильно урезал код.

http://pastebin.com/ggmWVRuz

Так понятнее будет.
#539 #919596
Кто на чём пишет свои rest-хуест сервисы? У меня ulib.
#540 #919624
>>919107

>Вот код копирования бинарных файлов, почему он работает?


Для тебя "скомпилировался" == "работает"?
#541 #919641
Аноны, Страуструп третье издание актуально сейчас?
Прост хуево английский знаю, и слышал, что в третьем с++11 не описывают.
Критично ли или лучше подыскать альтернативы?
919695
#542 #919695
>>919641

>лучше подыскать альтернативы

919701
#543 #919701
>>919695
Прата шестое издание норм подойдет?
#544 #919752
Добрый день. Я учу алгоритмы и структуры данных и для закрепления знаний решаю задачки. Я студент, но это не лаба, так что не спешите посылать на хуй. Имеется опыт со многими ЯП (все высокоуровневые), но ни один не знаю достаточно для трудоустройства (я не спешу).

Так вот, в одной задаче наткнулся на ошибку и совсем не знаю, что делать. Сама задача http://acm.timus.ru/problem.aspx?space=1&num=1004
Мой код для некоторых тестов :
1. http://ideone.com/O2qb8f
2. http://ideone.com/8EuKLK
3. http://ideone.com/jvYN8i
4. http://ideone.com/UXr58x
5. http://ideone.com/CKuotJ
6. http://ideone.com/4iFi0d
Как видите, у 5-го теста ошибка
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
и памяти расходуется больше, чем на остальных
Подозреваю, что у последнего ошибка связана с этой же проблемой.

Гуглить пробовал, но там в основном эта ошибка вызвана использованием массивов, неправильной величины (у меня векторы), или же что-то там с указателями (я высокоуровневый петух и не понимаю), которых у меня в коде вообще нет, только reference авто циклах, слова new тоже нет.

Прошу помочь, хотя, если пошлёте на хуй, я пойму
919757919775
#545 #919757
>>919752
Ещё одно, в универе плюсы не учили (первый семестр javascript), самостоятельно я тоже не изучал, просто делал так, как бы делал в других языках (гугл в помощь мне), так что даже, если не найдёте ошибку, можете просто подсказать, что можно было лучше оформить
#546 #919775
>>919752
В пятом тесте. В массиве parent, насколько я понял ты надешся что там дерево. Но на самом деле там граф с циклом 92 -> 57 -> 26 -> 16 -> 92, в результате for на 147 строке работает пока не закончится память. Слова new в программе нет, но его используют неявно вектора, когда им нужна новая память под значения (которые ты туда засовываешь в бесконечном цикле).
919853
#547 #919853
>>919775
Спасибо, благодаря тебе,я нашел свою ошибку. У меня с dfs была проблема и из-за этого возникала указанная тобой ошибка. Сам бы не нашел(
26 Кб, 565x60
#548 #920189
Липпман.
Не прошу решения, просто хотелось бы уточнить - это решаемо исключительно while циклом без использования других управляющих конструкций?
#549 #920190
>>920189
Как я понял, есть я ввожу 5 и 10, то на выходе должен получить все числа от 5 и 10. Так?
Но как, если на ввод пойдут числа 10 и 5?
В любом случае какие-то условия еще должны быть. Ну или я тупой.
920194920559
#550 #920194
>>920190
На ум приходит использование только двух while циклов, каждый из которых бы проверял диапазон от меньшего к большему и от большего к меньшему. Но это уродство какое-то.
#551 #920224
>>920189
while + break == if
#552 #920227
>>920189
Можно. Под спойлером решение.
std::cin >> a >> b;
int c = b - a + 2;
while (--c) {
std::cout << b - c + 1 << std::endl;
}
920228920229
#553 #920228
>>920227
-2147483647 -2147483648
-2147483646 -2147483648
#554 #920229
>>920227
Дак в одну сторону (т.е. когда левое число меньше правого) и я написать уже смог, в более понятной форме тем-более.
А вот так, чтобы работало сразу в две стороны (ибо ни твой, ни мой кодец не выдают нужных результатов, если левое число больше правого) - это либо использовать дополнительные управляющие констуркции, либо сразу два цикла while.
У Липпмана глава о while стоит перед всеми другими управляющими конструкциями, поэтому я и подумал, что оно должно решаться только им.
920234920250
#555 #920234
>>920229

> два цикла while


Или три.
http://ideone.com/edAvcn
920269
#556 #920250
>>920229
Я думаю что если бы Липпман хотел чтобы программа работала "в обе стороны" то он бы явно указал это. Тащемта с помощью разного рода математических трюков можно этого добиться. Есть вариант подразумевающий UB (основан на предположении о внутреннем представлении отрицательных чисел) http://ideone.com/3yZpjw Вместо сдвига можно использовать возведение в степень и вычисление корня - тогда не будет UB но нужно ебаться с корнями. Но не думаю что Липпман подразумевал что-то подобной в своей задаче.
920269922790
#557 #920269
>>920234
>>920250
Ну ок, аноны. Похоже, это последствия чтения Страструпа если бы 4-ое издание было переведено, я бы его и только его бы и читал, где тот реально мог в своих задачах заставить человека хорошенько выебнуться с решением.
920270
#558 #920270
>>920269
Страуструпа
920277
#559 #920277
>>920270
СТРАУСА
#560 #920431
>>920189

> упражнение 1.


> эти переусложнения


Проиграл.
920463
#561 #920463
>>920431
Такое бывает, когда ты в сотый раз пытаешься дочитать хоть какую-нибудь книжку по программированию, у тебя уже есть основа и есть какие-то знания, но между ними имеются пробелы и ты читаешь, потому что хочешь запомнить эти пробелы, но не знаешь, где они.
Ну и после пары глав Страуструпа Липпманн СЛИШКОМ легкий для прочтения, прям как для даунов написано. Хотя, возможно, дальше все будет лучше с этим.
920477
#562 #920477
>>920463
"Станет" лучше, когда будешь читать о том, чего ещё не знаешь из Страуструпа
#563 #920559
>>920190
Поменяй их местами, довен.
920640
#564 #920640
>>920559
Предлагаешь довенские решения.
И тред не читаешь.
920654
#565 #920654
>>920640
Окропил тебя живительной уриной
920655
#566 #920655
>>920654
Против ветра ссать вредно. Перестань.
#567 #920692
Впизду этого Липпмана, такое ощущение, что он меня за дауна держит.
Реквестирую вопрос об изучении исключительно технического английского языка только для чтения сопутствующей литературы.
Слышал, что там только совсем базовая грамматика нужна и основной напор делается на словарный запас специфических терминов.
Авось чего кто годного предложит? Пока читаю Стауструпа 4ed переводя по слову.
920711920712
235 Кб, 700x700
#568 #920711
>>920692

> хочу выучить синтаксис языка


> начну с английского



>Читаю первые главы книги, повторяю известное


> держат за дауна



К слову, у Липпмана и у Страуса ставятся разные цели. Первый просто рассказывает про язык, второй претендует обучить программированию.
Читал и то, и то
920807
#569 #920712
>>920692

> переводя по слову


Погоди, ты настолько плохо знаешь английский?
Тогда я тебе сильно не советую пытаться прочитать книгу на английском. Ты, наверно, думаешь, что выбрал наиболее правильный, информативный вариант. Может быть. Но кроме того ты выбрал самый долгий вариант. У тебя это растянется не на один месяц, а может даже на год.
Знаю английский на уровне чтения тех.литературы, легко могу объясниться устно в другой англоговорящей стране, но предпочитаю читать фундаментальные книги на русском, потому что в некоторых местах на перевод тоже время тратится, как бы я не изворачивался и не пытался воспринимать информацию сразу на английском, без промежуточного представления в русский язык
920807
62 Кб, 1517x801
#570 #920778
чому крашит
920784920786
#571 #920784
>>920778
Ты мне вот что скажи, ты зачем в void функции что-то вообще возвращаешь? Как тебя компилятор не развернул?
#572 #920786
>>920778
std::thread нельзя уничтожать, если с ним связан какой-то поток. Тебе нужно вызвать join() или detach()
920792
#573 #920792
>>920786
Вот это я овощ, первый раз про это слышу.
Почему это по дефолту не включено?
920796920808
#574 #920796
>>920792
Потому, что это С++, он обязан помочь пользователю выстрелить себе в ногу. Ты как маленький.
#575 #920807
>>920711
Я и далее глянул, что там. Все же у меня уже есть какая-то база, вплоть до некоторых моментов в ООП, проверенных на практике. Я до этого Страуструпа как раз таки и читал, 3-е издание и мне его форма изложения нравится куда больше. У него даже база читается весьма забавно - нужно вдумываться в прочитанное, переваривать. Да и выглядит это как минимум более информативно. Структура тоже более понятна.
У Липпмана в предисловии написано, что он хочет обучить возможностям языка, которые позволят игнорировать детали и я чувствую, что это ни есть совсем хорошо - т.е. если я серьезно захочу заняться этим делом и найти себе работу кодера, то буду полюбому охеревать от всего, что еще не перенесли на C++11. Хотя, возможно, это просто желание пердолится после pure c
>>920712
Не думаю, что верный. Просто вариант. 4-ое вышло в 2013 году и еще никто не занялся переводом. Вот теперь я понимаю, насколько хуево без англ. языка соваться в подобный мир.

Короче, пока просто буду третье издание читать, уверен, оно и сейчас способно многому научить. А С+11 подтяну позже. Есть же еще С++14 и С++17 за горами, я так долго мутузить буду, лучше вообще хоть что-то делать.
#576 #920808
>>920792
Универсального решения нет. Изначально хотели сделать чтобы в деструкторе std::thread вызывался detach, если он все еще не заджойнен. Но у этого варианта есть куча недостатков. Выделили два альтернативных варианта - вызывать join() или terminate() - но у них тоже свои недостатки. Вот ПЭЙПЕР есть на эту тему:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2802.html
В конечном счете остановились на terminate() - я точно не знаю чего, возможно что в таком случае все проблемы сразу видны. Вообще про проблему не забыли СТАНДАРТНЫЙ КОМИТЕТ получает новые предложения, типа
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0206r0.html
Может что и сделают, поближе к 2030.
920811921334
#577 #920811
>>920808

>2030


Какой ты оптимист. Они сколько не могли сделать нормальную работу с файловой системой, даже из буста вытащили модуль.
#578 #921216
Здравствуйте.
Посоветуйте манул по отладке кода с картинкоми.
Не хуйню, где рассказывают как поставить брэкпоинт, а что посерьезней.

Судя по тому, что происходит у меня, когда допуская ошибку, используя std (и по шапке прошлого треда), такой ахуенный вывод ошибок - это норма для мира с++.
Как это лечить, стоит начинающему использовать что-то другое, типа boost?
922239
#579 #921334
>>920808

>СТАНДАРТНЫЙ КОМИТЕТ


кек
#580 #921382
Господа крестовики, поясните за незнания каких вещей меня обоссут на интервью на junior крестовика(гейдев)?
921383
#581 #921383
>>921382
Паттерны. За них обоссут с головы до ног, и ещё в рот нальют.
921385921390
#582 #921385
>>921383
Если контора адекватная, то на паттерны им как раз-таки насрать.
921386
#583 #921386
>>921385
Вообще-то наоборот. За незнание паттернов обоссут.

А если по поводу геймдева, то знать абстрактную фабрику - мастхев.
921392
#584 #921390
>>921383
Паттерны-хуятерны, модели разработки и прочее я знаю. Именно по языку или каким-нибудь библиотекам, которыми все пользуются. Я так то явобог, но подвернулась вакансия на крестах. Знаю основной синтаксис и довольно много писал на крестах в универе, осилил когда-то польностью шилдта, хоть он и говно. Лабал на qt. Но хотелось бы знать что мне нужно задрочить, а какие знания освежить(на каких могу обосраться)
921396
#585 #921392
>>921386
Обычная абстрактная фабрика это моветон, за такую отчепушат во все дыры и оставят у параши. Применение в современном гейдеве имеет только абстрактная синглтон прокси фабрика. Вся индустрия только на ней строится.
921480
#586 #921396
>>921390
Ну тебе будет полезно знать STL, это определённо. Зубрить его не надо, но понимать нужно. QT тебе нахуй не нужен, он для интерфейсов только.

Boost ещё может быть полезен, но только в тех случаях, когда STL действительно не хватает. Буст ты до конца жизни не задрочишь. Если геймдев, то DirectX или OpenGL.

А вообще, определись кем ты хочешь стать собственно.
921401
#587 #921401
>>921396
Так нет, про вещи относящиеся к гейдеву я и сам знаю что мне нужно знать. Очкую по языку обосраться т.к. на крестах давно не писал, да и вообще раньше его яростно ненавидел. Ну все базовые вещи я знаю, типа конструкторы, деструкторы, указатели, шаблоны, эти ваши вертуольные функции, ООП и т.д. Есть ли какой-нибудь гайд или книга для перекатывающихся с других языков или просто уже имеющих опыт? И еще какой-нибудь с неочивидными и заковыристыми моментами? А то спиздану что-нибудь типа "более высокий приоритет имеет шаблонизированная функция с такими же параметрами", а не наоборот. И меня прям на собесе отпетушат.
Многопоточность знать надо? Утилиты сборки типа cmake или вижуал студио сама за меня жепу подотрет?
921404921509
#588 #921404
>>921401
По поводу книг - сюда:
https://github.com/sosachbot/cppthreadhat/wiki

Наверняка найдёшь что-то полезное, я уверен. Многопоточность скорее всего пригодится. Хотя и не факт. (Особенно блять важно помнить про ебучие указатели и ссылки, вот просто блять помнить как они работают). Сборщик мусора за тебя будет подтирать, так что помнить про удаление и уничтожение экземпляров тебе не нужно, если конечно через new их делать каждый раз не будешь.

Утилиты сборки помнить необязательно, если конечно под линукс делать не собираешься. Вижуал студио или другая IDE за тебя не только подотрёт, но и ещё и заоптимизирует с помощью спермотрюков, если попросишь.
921439
#589 #921439
>>921404
Платиновый вопрос на плюсах сделали сборщик мусора или ты про умные указатели?
921450
#590 #921450
>>921439
Умные указатели же. А сборщики мусора вроде как есть сторонние.
#591 #921480
>>921392

>прокси


А это зачем?
921489
#592 #921489
>>921480
Иначе будет слишком просто сорцы понять
#593 #921509
>>921401

>какой-нибудь с неочивидными и заковыристыми моментами?


Саттер с Мейерсом
921583
24 Кб, 416x287
#594 #921548
>>904165 (OP)
Привет анончик, перекатываюсь из веб макаки в кресты. Возникают синтаксические / best practise вопросы. Может даст кто скайпик / вк уточнять такие нюансы (никаких заёбов и прозьб просмотреть код, только консультация)
921559
#595 #921557

>>undefined


Ещё один ёбнутый: это анонимная доска.
#596 #921559
>>921548
Запомни самое важное:
= - присваивание.
== - сравнение.

Могу подсказать, но я и сам учусь.
921565
42 Кб, 640x800
#597 #921565
>>921559
это я знаю) У меня пара вопросов есть.
Есть ли способ записать переменную при обьявлении типа int a = cin>>a;
И ещё один. Я работаю в clion и когда запускаю прогу но не ввожу данные и делаю билд опять, приложение зависает в памяти. И приходится убивать его иначе не могу сделать билд, пишет нет доступа к exe.
921570
#598 #921570
>>921565
int a = cin>>a;

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

int a = 10;
int a = getSomeValue();
bool isWorking = example.getState();

>И приходится убивать его иначе не могу сделать билд


Ну так в чём проблема? При перекомпиляции он стирает старые скомпилированные файлы в том числе и exe. Завершай приложение перед компиляцией, всё верно он тебе говорит.
921580
59 Кб, 1334x730
#599 #921580
>>921570
Смысл в том что открывает файл Clion, но он его не закрывает при билде и он остается висеть в памяти. Я его могу закрыть только через диспетчер.
Может это баг самого clion.
921584921755
97 Кб, 719x183
#600 #921583
>>921509
Саттера как раз наворачиваю. Осилил уже 50 страниц и у меня только один вопрос: Вы что ебанулись писать на плюсах в 2017? Не хватало в этом языке трудностей и неочевидных правил, а теперь еще каждый раз надо в голове держать разверсистые правила вывода типов и когда там моя переменная потеряет const, что там у меня rvalue, а что lvalue или когда указатель потеряет владение объектом и мой временный объект в три хуя на стеке выдолбят. Пиздец, выучите ruby, D, посмотрите как языки для людей должны выглядеть. Почитайте про акка и эрланг, как люди по уму многопоточность делают. Охуеть, пойду дальше дрочить ваши const
std::_Simple types<std::_Wrap_alloc<std::_Vec_base_types<Widget, std: :allocator<W1dget>>: :_ Alloc> ::value type> ::value_type *
#601 #921584
>>921580
Перед билдом поищи кнопку "завершение" приложения, и жми на неё. Я уверен, что она где-то есть.
921755
#602 #921755
>>921584
Дык, это типичные классические спермопроблемы новичка — такое происходит всегда и во всех IDE (в том же последнем культяпкреаторе и студии (хотя там мб уже разобрались, я последний раз 10-й пользовался)) когда судорожно что-то постоянно меняешь и ребилдишь без остановки, причем только на шинде, очевидно что-то не так в системе (либо кто-то не учитывает какой-то ее механизм для чего-то). ну еще у того же QML вообще на всех платформах подобная проблема есть.
>>921580
Кнопочка "стоп" находится слева внизу, слева от места куда ввод-вывод из соснольки переправляется. Шлепай по ней и не ребилдь как сумасшедший.
#603 #921845
Аноны, поясните за пару моментов в OGL.
Почему ему работать с треугольниками куда эффективнее, чем с теми же квадратами?
Почему при разработке игр и моделирования передвижения игрока по миру чаще всего двигают сам мир, а не персонажа в нем? Разве перемещение всех вершин не более затратная операция, чем перемещение вершин самого игрока?
#604 #921863
>>921845
Никто ничего не перемещает. Читай про матрицы преобразований. Каждая матрица умножается на вектор позиции вершины и получается вектор позиции объекта в координатах, которые нужны тебе.
Квадрат - два треугольника. Треугольник - минимальный способ нарисовать двухмерную фигуру, а также однозначно определить плоскость ее размещения.
#605 #921949
>>909609
Не говори о чем не знаешь, в Qt есть виджеты с opengl ускорением.
http://doc.qt.io/qt-5/qopenglwidget.html
Тянет где-то пару десятков тысяч квадратов на экране без просадок на моем ноуте. Да даже стандартными средствами Qt можно сделать тетрис и не будет ничего лагать.
#606 #922124
Бля,нужен совет, через чё лучше реализовать работу с fibre channel протоколом,тут есть два стула,на одном boost::asio точёный, на другой qt network печёный...
Может быть линка на какой-то пример подобной реализация, а то я вообще хз. Если кто знает,может можно как-то посредством буста фрэймы из fc инкапсулировать в ip протокол.
42 Кб, 799x494
#607 #922231
>>920189
Решаемо, конечно же. Пример пикрелейтед
922318
#608 #922239
>>921216
Посмотри это:
https://youtu.be/-n9Fkq1e6sg
Boost сразу не советую, если для тебя вывод ошибок std "охуенный". Можешь попробовать другой компилятор, там сообщения об ошибках разные.
#609 #922318
>>922231

> без использования других управляющих конструкций


> тернарный оператор

#610 #922349
Посоны, у меня незавидное положение, поэтому пишу сюды, куда же еще тут все мои друзья же. Вообщем верстаю проект (клиент-серверное приложение с запросами к БД, и всякой там анальщиной уровня "принять по http json и конвертнуть в местный велосипед") без наставника, из стека: буст (асио) и цэкресткрест 11, либа под sql и тащемта все. Я заранее прикинул хуй к носу, примерно прикинул абстракции там, интерфейсы, вся хуйня. Но мало что тз постепенно обрастало новой поебенью (изначально это вообще был эхо-сервер, лол), так я еще и сам мудак, опыта то нету нихуя. В итоге у меня сейчас в каждый конструктор заезжает по пятаку указателей (да-да, сырых блядь) и вообще я уверен что это все течет как школьница при виде альфача, и когда это выкатится в продакшен то каждые 5 секунд будет сегфолтится. Проект пока небольшой (~5к строчек сырых, т.е. с комментами и скобками), но я в этом пиздеце уже и сам охуеваю, и дальше просто не могу это читать, это уже не код нахуй.
Вроде и у класса каждого по полтора метода, вроде и про паттерны слышал, и копипастить с переполненного стека умею. А на выходе ебаное говно. Что делать, ананасы?
922404
#611 #922404
>>922349

>А на выходе ебаное говно. Что делать, ананасы?


Рефакторить, и не передавать указатели налево и направо.

>и вообще я уверен что это все течет как школьница при виде альфача


Ну не совсем всё так плохо. Попробуй, запусти, дай нагрузку. Не забывай деструкторы использовать, если ты что-то через "new" создаёшь. C++ хоть и упрощает выстрел в ногу, но не до такой же степени.
#612 #922693
922790
#613 #922790
>>922693
Хм... ну да. Задача соответствует условию. Спасибо. Чуть выше >>920250 анон тоже решение хорошее предложил, но оно довольно спецефично.
922792
#614 #922792
>>922790
задача - условию - ответ условию. фикс.
31 Кб, 508x705
#615 #922812
>>915456
Обязательно надо создавать переменную для отсеивания скобок?
#616 #922838
До чего унылым стал тред, пиздец.
922931
#617 #922931
>>922838
Хули тебе надо-то? Платиновые вопросы про "= и ==" задавать?
#618 #923287
Плюсаны, нужно написать простую задачку, но я в плюсах мало что знаю, можете помочь?
923289
#619 #923289
>>923287
Задачу давай.
923291
#620 #923290
Есть около 1к файлов с разными именами, нужно написать код, который пронумерует все файлы от 1 до последнего с фильтровкой по имени.
Например, были файлы: abc, test, а стали 1. abc, 2. test.
И еще нужна программа, которая удаляет определённое число знаков сначала имени файла.

Если можно, сам я ++ по чуть-чуть изучаю, но до операции с файлами еще не дошёл.
923291923296923313
#621 #923291
#623 #923304
>>923296
Я не очень понял.
#624 #923313
>>923290
Для твоих целей использовать плюсы не очень умно, лучше ебануть скрипт на питоне.
Если уже так хочешь плюсы - твоё дело. Гугли pstreams (удобный хедер для исполнения консольных команд прямо с твоей программы, умеет получать выхлоп команды в отличии от system(), интерфейс как у iostream)
Как приблизительно это должно работать?
Получаешь содержимое папки:
redi::ipstream getDir("ls /path/to/dir");
Затем по одному читаешь из потока названия файлов, копируя каждую строку (кроме тех, которые собираешься удалить) из исходного файла в новый, после чего удаляя исходный файл:
redi::opstream rm("rm /path-to-file/file.txt");

Или тебе просто готовый код?
923317923359
#625 #923317
>>923313
Мне не обязательно плюсы, просто плюсы - единственное что я смогу сделать из кода в компилируемый файл.
Я года 3 назад знал пхп, там я бы смог за 10 минут такую программу написать, но уже всё забыл.
923322
#626 #923322
>>923317
Тебе на какую ОС? Ибо команды в винде и лине отличаются, тот же код на обеих ОС работать не будет.
923324
#627 #923324
>>923322
Виндовс 10.
923343
#628 #923343
>>923324
набросал тебе первую программу. вторую слишком затратно писать на плюсах, ибо ей придётся копировать почти всё содержимое файла.
http://pastebin.com/eAix7Eyn
923344923368
#629 #923344
>>923343
А что определять в "pstreams/pstream.h"? У меня при компеляции пишет что нет такого файла / папки.
923353
#630 #923353
>>923344
Его докачать нужно.
https://sourceforge.net/projects/pstreams/
923354
54 Кб, 1160x910
#631 #923354
>>923353
Я уже понял, только всё равно какие-то ошибки выдаёт.
923356
#632 #923356
>>923354
Ты в "#include" проебал кавычки
923358
57 Кб, 979x758
#633 #923358
>>923356
Я что-то точно не понимаю.
Добавил ковычки.
923361923366
#634 #923359
>>923313

> использовать плюсы не очень умно


Часто встречаю замечания по поводу нерациональности, со стороны программиста, использования С++ для работы с ОС. Если кто-то считает, что плюсы и в правду не подходит для решения задач в ОС, объясните начинающему - почему?
923362923365923367
#635 #923361
>>923358
#include "pstream.h"
923366
#636 #923362
>>923359

>почему


Cкорость разработки. На условном питоне есть широкая поддержка работы с ОС прямо в стандартной библиотеке. Иными словами, на пейтоне ты напишешь 6 строк, а на с+ 36.
923370924952
#637 #923365
>>923359
Излишне сложно.
924952
#638 #923366
>>923361
Я это сделал, но у меня теперь такая ошибка: >>923358
923372923374
#639 #923367
>>923359
По одной простой причине: код на плюсах не кроссплатформенный. Там нет аналога <os> в той же жабе, или питоне. Вместо этого используется winapi или POSIX-вызовы.
923375923376924952
#640 #923368
>>923343

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


Я в с+ треде или где?
http://www.cplusplus.com/reference/cstdio/rename/
923377
#641 #923370
>>923362
Скаченный файл перенеси в в директорию с сорс.срр.
923372
#642 #923372
#643 #923374
>>923366
Извиняюсь, оно с виндой, как оказалось, не дружит. Попробуй версию 0.17, там ещё была совместимость (не факт, что скомпилируется). Если нет - сейчас поищу другую либу и перепишу
#644 #923375
>>923367
js + os.js || electron = crossplatform forevaaa!
#645 #923376
>>923367
Не совсем. Вроде в новом стандарте таки появились кроссплатформенные варианты работы с той же файловой системой благодаря бусту.

Хотя, если использовать буст, то получить кроссплатформенность можно, но программа будет занимать несколько больше.
#646 #923377
>>923368
В глаза ебусь, прочитал как "определённое количество знаков в начале файла".
#647 #923596
>>915840

>щас не нужны джуны


Как тогда стать мидлом?
923707
#648 #923707
>>923596
Берёшь, и становишься. Всё очень просто.
#649 #923732
>>921845

>Почему ему работать с треугольниками куда эффективнее, чем с теми же квадратами?


Треугольник --- примитив растеризации. Квадрат --- два треугла.

>Почему при разработке игр и моделирования передвижения игрока по миру чаще всего двигают сам мир, а не персонажа в нем? Разве перемещение всех вершин не более затратная операция, чем перемещение вершин самого игрока?


Потому что отрисовываешь картинку относительно глаз персонажа, а не (0;0;0) мира
923975
#650 #923975
>>923732

> Потому что отрисовываешь картинку относительно глаз персонажа, а не (0;0;0) мира


А преимущество-то в чём?
2 Кб, 258x134
#651 #924155
Как сделать так, чтобы данные типа float выводились с определенной точностью, например с точностью до сотой?
924174924181
#652 #924174
>>924155
Докатились... Ты шутишь, да?
#653 #924181
>>924155
Это совсем уже платиновый вопрос.

[CODE]cout.precision(/number/); // задает количество знаков после десятичной точки
// где number - количество знаков после десятичной точки[/CODE]
924228
#654 #924228
>>924181
не работает эта ебатория
количество нулей не меняется(
делал как тут написано
http://www.cplusplus.com/reference/ios/ios_base/precision/
924489
#655 #924489
>>924228
http://ideone.com/A0APTP
Ньюфаги, вы ополоумели? Ещё спросите как напечатать в консоль матрицу
924541924580
#656 #924541
>>924489
Главное ответил на платину, и ещё жалуется.
924691
#657 #924580
>>924489
А реально можно?

Мне в ВУЗе сказали, что нельзя
25 Кб, 487x317
#658 #924649
Шта ита значит??
924661924673
#659 #924661
>>924649
Это значит что ты либо записал не туда, либо удаляешь по хуевому указателю.
924680
#660 #924673
>>924649
Программа не сильно большая?
Там в студийке под программы какое-то ограничение памяти есть
924680
#661 #924680
>>924673
Небольшая, там картотека
>>924661
Да скорее всего это
#662 #924691
>>924541
Я новичок С++ тредов, но форс хаскеля ещё 4 года назад застал
924725
#663 #924725
>>924691

>>новичок


>>4 года назад

924748
#664 #924748
>>924725
Я не сидел все эти годы в /pr/
#665 #924952
>>923362
>>923365
>>923367
В какой области разработки С++ будет наилучшим выбором?
925130925238
#666 #925130
>>924952
геёдев
декстоп
ну и всё что связано с байтоёбством
925224
#667 #925224
>>925130

> декстоп


Выше сказано почему для декстопдева это не лучший вариант.

>геёдев


Что это?
925326925354
#668 #925238
>>924952
Никто не будет отвечать такому неуклюжему и жирному троллю
#669 #925326
>>925224

>>геёдев


>Что это?


Разработка гей-ИИ
#670 #925354
>>925224

>>геёдев


>Что это?


Gamedev же ну
#671 #925427
Пора бы уже перекатиться
#672 #925582
>>921845

>Почему при разработке игр и моделирования передвижения игрока по миру чаще всего двигают сам мир



Потому что ты двигаешь объекты виртуального мира проецируемые на монитор, а не монитор в виртуальном мире.
#673 #925592
>>921845
Почему ему работать с треугольниками куда эффективнее, чем с теми же квадратами?

Вершины треугольника не могут не лежать в одной плоскости (это очевидно). А если взять квадрат из 4х вершин, и случайно подвинуть одну из вершин не перпендикулярно нормали этой плоскости, сломается геометрия (он уже перестает быть плоской фигурой, и чтобы исправить положение, придется его разбивать на треугольники вдоль одной из диагоналей). По этому любые многоугольники треангулируются, так проще - меньше логики (хотя бы в проверках), несколько проще элементы gpu (а значит их можно сделать большее количество за меньшие деньги)
#674 #925777
Ананасы, есть ли какие-нибудь молодые перспективные можно и не очень проекты на github, куда может вкатиться ньюфаг?
927997
#675 #927402
бамп
#676 #927565
бамп
#677 #927997
>>925777
Удваиваю этого.
767 Кб, 1600x900
#678 #928986
Вы ЧЁ охуели?
#679 #928987
Где перекот?
929021
9 Кб, 271x400
#680 #929005
Допустим, есть 2 строки s1 и s2.
Требуется определить, "пересекаются" ли они общими частями (как на пикрилейтед). Есть ли что-нибудь в стандартных либах или в бусте, или нужно велосипедить?
929049
#681 #929021
>>928987
Надо стих придумать
930012
#682 #929049
>>929005
std::is_permutation() из algorithm
929088
#683 #929088
>>929049
Вообще не то.
В моём компиляторе нет нужной (!) функции в std moi !G7fD9hbHDM #684 #929403
В общем, есть файлы, из которых нужно собрать проект. Область: embedded. Моя задача: понять проект, собрать его, написать свою часть кода.

Ребята, которые написали сам код используют gnu компилятор какой-то версии из последних, где есть поддержка c++11.
Я использую компилятор от ARM 6.6 - это необходимо. В ARM6.6 есть поддержка с++11, но с некоторыми ограничениями.

Проблема заключается в том, что в проекте используется одна библиотека, где используется метод std::move. В свою очередь, в описании поддержки компилятором от ARM c++11 пишется, что std::move не поддерживается, но есть прямой аналог (то есть дают кусок кода) реализации с помощью static_cast.

То есть проблема: при сборке проекта у меня выбивает ошибку о том, что no member std::move was found, что весьма логично. А что мне делать?

Что нашёл и что непонятно:
1) Если менять функцию прямо в std, то получим undefined behavior. На практике получим ту же ошибку, то есть то, что member was not found
2) Менять компилятор - будет пиздец. А это вообще может быть выходом?
3) Как override функцию в std - может, я неправильно это делаю? В гугле вообще говорят что это бред, да и в принципе будет undefined behavior

большое спасибо, если кто выскажет свои мысли/решения.
929430
#685 #929430
>>929403
решено, что помогло:
1) создаю move.h, где пишу
namespace std{
template<> return_value move(args) {....}
}
2) подключаю move.h именно там, где использую функцию std::move
3) profit

иду учить матчасть про неймспесы и переопределение
#686 #929971
Ваш тред смыло. Перекатывать не собираетесь?
930012
#687 #930012
>>929971
Нам и тут хорошо.

>>929021
931262
#688 #931191
Хочу написать свой микросервис на крестах. Скажите с чего начать нюфагу, чтобы получился более-менее приличный production-ready код
931620
#689 #931262
>>930012
Как ты заебал уже
#690 #931620
>>931191
Бамп куесчену!
931748
#691 #931748
>>931620
Он уже не бампается
#692 #931765
Может всё же запилим перекат?
931770
#693 #931770
>>931765
Шапку прикреплённой темы читал?
Перекота забанили
931804931851
#694 #931804
>>931770
Я нихуя не понял. Там просят пересоздать. В чём проблема?
931806
#695 #931806
>>931804

>Я нихуя не понял. Там просят пересоздать. В чём проблема?


Почему это не сделать тебе?
931808
#696 #931808
>>931806
Меня малость пугает то, что никто этого делать не хочет. Это подозрительно, тут что-то не так
#697 #931851
>>931770
При чем тут перекот. Если бы тред был с ним связан, его бы удалили, как остальные.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 10 марта 2017 года.

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

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