Этого треда уже нет.
Это копия, сохраненная 22 мая 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
#2 #961847
Зачем в 2к17 нужны плюсы, когда есть раст?
#3 #961851
>>961847
Легаси
#4 #961857
>>961847

>Зачем в 2к17 нужны какие-то недоязыки, когда есть проверенный временем с++?

961935
#5 #961912
>>961905
Помнится, недавно он то ли хачкелем, то ли лишпом обмазывался.
964591
#6 #961919
>>961905
А то ты WEB-GUI под крестами собрался писать, кловн. Ничто не мешает использовать кресты для бэкенда и яваскрипт для фронтенда (где ему и самое место), другое дело, что на крестах это будет огромный велосипед (еще и неизвестно какой), вместо использования уже обкатанных java или asp.net.
Каждый язык занимает свою нишу.
961977964591
#7 #961924
>>961905
Работающего в фейсбуке Кармака заставили использовать фейсбучное поделие. Ну ок, чо.
964591
#8 #961931
>>961905

>осознал бесполезность C++


Хуйню несешь, там ни слова о крестах
964591
#9 #961935
>>961857
Пока что временем проверено только то, что он говно.
#10 #961970
>>961847
4 слова:
ios, android, PS, XBOX.
На всех этих платформах Раста просто нет. С++ на них чувствует себя превосходно.
962020
38 Кб, 1168x258
#11 #961975
>>961905
Мигание курсора уже оптимизировали?
964591
#12 #961977
>>961919
Javascript нет места нигде. С одной стороны новое поколение гуманитариев, которые рвутся в кодинг и не могут осилить ничего кроме JS и пытаюстся написать на нём небо и аллаха, с другой стороны программисты, которые годами пытаются выйти за грань реальности в попытках оптимизировать интерпретаторы этого говна, и ничего хорошего из этого всего не выходит.
961980
#13 #961980
>>961977
Но он свою нишу занял ведь и конкурентов у него нет, насколько я понимаю (или я слишком отстал от жизни). Опять же, навряд ли от него будут оказываться, по крайней мере, в ближайшем будущем, хоть он кому-то и не нравится. Кроме того, чтобы найти замену JS, его необходимо конкретно распиарить и перетащить опять же на него сообщество разработчиков/говнокодеров/пользователей и прочей шелупони, что также требует большой работы.
Тот же Go, наверно, никому в хуй бы не уперся, если бы в свое время google не стала его пропихивать куда ни лень. Ту же самую науку провернула Microsoft со своим C#, только раньше.
А у всех отростков или языков, которые внезапно появляются, и так же быстро умирают, без должной поддержки будущего нет, несмотря на то, какие бы пиздатые концепции в них не были заложены или с какой простотой и эффективностью реализовывались бы программы на них. Они так и будут игрушкой для хипстеров и прочих рукоблудов.
961990962016
#14 #961990
>>961980

>Но он свою нишу занял ведь и конкурентов у него нет


Да, к сожалению так сложилось. Но это не повод перетаскивать это говно во все сферы.
#15 #962004
>>961905

> ui на js


> или какой нибудь луа, питон и пр.


Как вообще совместить в одной программе 2 языка?
962005964591
#16 #962005
>>962004
Через FFI какой-нибудь.
962007
#17 #962007
>>962005
Ну дернуть удаленный метод чтобы он вернул мне строку huipizda это я еще могу понять. Но как отрисовать интерфейс написанный на другом языке нет.
962018962026
#18 #962016
>>961980

>конкурентов у него нет


VBScript
#19 #962018
>>962007

>интерфейс


>написанный на языке

#20 #962020
>>961970
На первых двух есть и прекрасно живёт. На остальных — не в курсе, но вроде как у них жи закрытый сдк, хз короч.
962052
#21 #962026
>>962007
Дернуть из другого языка функцию отрисовки и закинуть адреса своих ф-й обработчиков гуя, в чём проблема-то?
#22 #962052
>>962020
это ты прекрасно живешь в своем манямирке, а на Расте надо будет постоянно биндинги пердолить (или брать хрен знает насколько проверенные на стороне) и трахаться со сборкой.
962167
126 Кб, 1366x768
#23 #962119
Помогите, пожалуйста. Почему он берет и прыгает на строку выше? нужно поменять местами половинки массива
962134962145
#24 #962134
>>962119

>>int a[][4];


>>int count2 = 4;


>>int temp = a[count1][count2];


Знаешь, что четверка означает?
962172
#25 #962145
>>962119
Потому что ты программу так написал.
https://ideone.com/qrs3pP
962172962644
#26 #962167
>>962052
Есть генераторы биндингов (это настолько сложная хуйня, что она должна быть проаерена, кек, ты прям жявамакакен только и делаешь что фреймворки скрепляешь друг с другом), а про еблю со сборкой в плюсотреде слышать даже не смешно.
#27 #962172
>>962134
Очень жаль но нет
>>962145
Спасибо большое добрый человек
#28 #962246
Няши, помогите, не врубаюсь что не так.
Писал программу под opengl (sdl) на маке, там в конфигурационный файл для qmake вписал:
INCLUDEPATH += /Library/Frameworks/SDL2.framework/Headers
А сейчас переношу на линукс, и непонятно какой путь включать.
962252962253962295
#29 #962252
>>962246
pkg-config
#30 #962253
>>962246
спрашивай у менеджера пакетов или гугли sdl2 + название твоего дистрибутива. еще можно find / | grep SDL2 -i
#31 #962268
Нигде не могу найти инфу про fork(), как использовать, зачем оно надо и что делает. Есть описание в терминах процессов и все. Книгу может посоветовать может кто?
#32 #962295
>>962246

>2k17


>хардкодить пути


Съеби, не шкварь тред
962308
#33 #962308
>>962295

>2к17


>даун всё ещё не может в докер

962318
#34 #962316
Как в плюсах вернуть некий тип от enum?
Образно говоря, есть
enum numbers {
one;
two};
Я вызываю функцию из другого класса которая делает return one;
Как вызывающий класс понимает что это? Надо и в нём делать такой же enum?
962402964596
#35 #962318
>>962308
Ёбаный даун, при чём тут вообще докер?
#36 #962390
Котаны, есть ли инфа, собираются ли вообще в коммитете хотя бы мусолить тему или мб уже даже черновик на эту тему есть? о стандартизации ABI?
962393
#37 #962393
>>962390

>стандартизации ABI


Как ты себе это представляешь, даун?
962404964599
Долбоёб #38 #962398
Котаны, есть ли инфа, собираются ли вообще в коммитете хотя бы мусолить тему или мб уже даже черновик на эту тему есть? о стандартизации опций компиляторов?
962404
#39 #962402
>>962316
У enum только один возвращаемый тип - unsigned int
962403962410
175 Кб, 500x480
#40 #962403
>>962402
Лучше заткнись
#41 #962404
>>962398
Ахуенная шуточка. Самое весёлое что все, кроме спермокомпилера поддерживают как минимум один основной базовый набор команд и используют гнутый стиль CLI.

>>962393
Описать стандартом правила манглинга, стандартное соглашение о вызовах и прочую хуйню. Модель памяти же стандартизировали как-то.
962407
#42 #962407
>>962404

> все, кроме спермокомпилера


gcc, clang и icc. Остальные не поддерживают.

>Описать стандартом правила манглинга


Зачем?

> стандартное соглашение о вызовах


И что делать на ARM, если стандартизуют, что первый аргумент передаётся в RDX?

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


Для абстрактной машины.
962418
#43 #962410
>>962402
Это так значит шутка что ли?
Это он на твоей x86/x86-64 машине в 32 битное значение устанавливается, потому что его доставать оттуда проще будет. Ничего не мешает тебе объявить enum с заданным размером значения (цэ 11):
http://en.cppreference.com/w/cpp/language/enum
#44 #962418
>>962407

>gcc, clang и icc. Остальные не поддерживают.


Прибавь к ним msvc - и получишь все живые компиляторы, у остальных распространение на уровне хачкеля (если не учитывать всякую закрытую залупу для соснолек прочего, хотя мне кажется там сплошные форки гцц как и в мире мк).

>Зачем?


Потому что закрытый софт и регулярное обновление компиляторов - это анальная боль. Да, для с точки зрения программиста конечно тупая ситуация, но бизнесу похуй.

>И что делать на ARM, если стандартизуют, что первый аргумент передаётся в RDX?


а) Класть хуй на стандарт;
б) Стандартизировать на распространенные архитектуры отдельно (их всего-то грубо говоря 3-4 штуки).

>Для абстрактной машины.


Учитывая сколько говна лилось и сколько ее пилили в той же жаве, кажется мне, что она тоже говно, хорошо что мне не приходилось с ней работать, лол.
962419
#45 #962419
>>962418
Я понял. Ты местный клоун-дурачок.
962427
#46 #962427
>>962419
Ну как сказать.
Я вот сегодня послушал челика, который рассказывал что был на вчерашнем ивенте яндекса, и в 17-м стандарте вместо 128 и 256-битных интов как в гцц будут просто автоматически растущие в ^2 инты, а так же классы с апкастом в компайлтайме при переполнении разрядной сетки и прочего, а так же в constexpr будет свой std::vector и у меня возникло ощущение, что клоуны в коммитете сидят.
962431
#47 #962431
>>962427
А че там самое главное, когда эти пидоры введут статическую рефлексию, мне уж очень интересна эта тема, потому что уже использование protobuf'а и прочих, без вранья, костылей, доебало, когда можно было бы применять свои типы с ленивой загрузкой, COW и прочими ништяками.
962436962442
#48 #962436
>>962431

> мне уж очень интересна эта тема


Да всем блеать интересна.

Но долбоёбы возятся с какими-то модулями.
962442962518
#49 #962442
>>962431
Лет через 10. А ты пока держись там, наслаждайся новыми интами и оператором <=>, всего доброго и хорошего настроения.
>>962436
Зато фс в стд завезли, радуйся барской щедрости!
962467
#50 #962467
>>962442
Ну пока генераторы схем есть итак неплохо. В принципе, думаю под себя для работы наковырять один небольшой, чтобы можно было определять пользовательские типы, да вот только все это костыли, как ни крути, хочется нативной поддержки от языка таких трюков.

>> <=>


Че ето такои? Это пришло на замену триграфам?
962470
#51 #962470
>>962467
Это хуитка чтобы заставить компилятор сгенерировать дефолтные <, = и > за тебя. Хз правда нахуя, но видимо надо.
#52 #962518
>>962436

>Но долбоёбы возятся с какими-то модулями.


Ты охуел
962523
#53 #962523
>>962518
Нет ты.

Модули это тупо оптимизация времени компиляции. А статической рефлексии нет вообще.
962530
#54 #962526
Анонасы, хочу сделать сигнал в одном классе а слот в другом. Просто лютый бред писать например реакцию на клавиши в классе отображения.
Это вообще реализуемо?
Попытался пойти напрямик -
QObject::connect: Cannot connect (null)::pressedButton() to (null)::receiveKey()
962536964602
#55 #962530
>>962523
Не только. Возможно, менеджеры пакетов на плюсы завезут или хотя бы можно будет как в жабе подключать либы (или около того). Профит все получат и сразу.
962535
#56 #962535
>>962530
apt-get хватит всем, а спермоблядей даже модули от DLL-hell не спасут.
962541962550
#57 #962536
>>962526
Просто берёшь и соединяешь.
#58 #962541
>>962535
Я надеюсь на лучшее.
#59 #962550
>>962535
Самоутверждаться используемой операционной системой на дваче
962592
#60 #962592
>>962550
Я слыхал VS2017 научилась в неабсолютные пути. Это правда или спермомирок продолжает героически сопротивляться прогрессу?
962601
#61 #962601
>>962592
В не-абсолютные пути точно умели в 2010 студии. Раньше - не знаю. Так что не какай жиденько, а делай уроки, завтра в школу. Расскажешь всем как ты круто линукс устанавливаешь.
962638
#62 #962638
>>962601
Спермоблядь обиделась за наезд на её любимый спермокостыль и пошла грудью вперёд в атаку.
962687
40 Кб, 1164x430
#63 #962644
>>962145
найс траленг
962683
#64 #962683
>>962644
У вас STACK OVERFLOW
#65 #962687
>>962638
Я даже не знаю, как ответить на эту убогую попытку "траленка". Подрастешь - может поубавится юношеского максимализма.
962696
#66 #962696
>>962687
Спермоблядь ещё страдает эйджизмом.
#67 #962757
Всем привет. Вот хочу я найти библиотеку для работы с деревьями не могу этого сделать, гугл по запросу c++ деревья, выдает только детские рассуждения с хабра. Научите.
962762962833963164
#68 #962762
>>962757
в бусте точно ничего нету?
962867
#69 #962830
>>961905
>>961847
Существует мнение, что кресты ругают те, кто не смог в него
962849964591
#70 #962833
>>962757

> не могу этого сделать


Попробуй на английском запрос составить.
#71 #962849
>>962830
Осиливают говно. А нормальный язык приятен и понятен любому.
963143963161
#72 #962867
>>962762
В бусте точно что-то есть, я не знаю как это искать.
#73 #962890
Как в qt сделать QEventLoop бесконечным? Чтоб прерывалось только с выходом из приложения?
Схема
QEventLoop name;
printf("LOOP")
name.exec();

Работает только 1 раз. Как выводить Printf раз в некотрое время?
964604
#74 #962947
помогите с методом зейделя пожалуйста:
мейн: https://pastebin.com/gA0411vF
заголовочный: https://pastebin.com/pNvcCRJ3
файл с матрицей: https://pastebin.com/dj6q7R8u
правильный ответ:
X1 := 4
X2 := 0
X3 := -1
моя проблема скорее всего находится в функции zeydel, которую я скопипастил с википедии, однако я мог там что-то накосячить(но я проверял). Помогите исправить пожалуйста программу.
962994
#75 #962994
>>962947
что за хуйне учат в этих универах...
963140
#76 #963140
>>962994
я разобрался: вышел за пределы массива - умер
#77 #963143
>>962849
Искренне не понимаю, что в нем неприятного
963206
#78 #963161
>>962849
Ну так в крестах ничего сложного нет, по сути, а с приходом c++11 (или сторонних либ еще ранее), тебе даже не нужно ебать всем мозги по поводу автоматического высвобождения ресурсов, потому что для этих дел есть unique_ptr и shared_ptr.
963206
#80 #963206
>>963143
Твоя фраза должна звучать так: "я тупо не видел ничего другого в глаза, вот и ебусь в них".
>>963161
Если писать всё на подсчёте ссылок, то получится тормозное говно как на яве (единственный плюс — быстрый стартап, но в когда объекты начнут дохнуть получим вообще петон).
963219963220
49 Кб, 600x439
#81 #963219
>>963206

>Если писать всё на подсчёте ссылок, то получится тормозное говно как на яве

#82 #963220
>>963206
ты знаешь чем юник_птр от шареда отличается, подсчитыватель ссылок?
963249
#83 #963225
Как узнать, что программа win32 запущена через дебаггер не в IDE, а в софте типа ollydbg ?
963247
#84 #963227
>>961847
Миша, иди нахуй отсюда.
#85 #963247
>>963225
Нашел. IsDebuggerPresent().
#86 #963249
>>963220
Давай начинай свою песню про бесплатность юников, дружочек. Сразу с бенчмарками и ассемблерными листингами, по-хорошему.
963261963267
#87 #963261
>>963249
У меня был такой чувак на прошлой работе, все хуярил обычными указателями, память у него текла пиздец, зато БЫСТРО (ну, он так думал, профайлер он не запускал ниразу). И еще он в 93ьем написал свою уебищную STL и до сих пор ее использует. Это не ты случаем?

https://godbolt.org/g/96YQfA
https://godbolt.org/g/IUiWmk

Три с половиной ассемблерные инструкции мне не очень жалко потратить на гарантированное отсутсвие утечки.
#88 #963264
>>963261

>https://godbolt.org/g/96YQfA


>https://godbolt.org/g/IUiWmk


Лол, GCC sucks bollcks

Попробуй clang-ом.
963266963267
#89 #963266
>>963264

>bollcks


bollocks
#90 #963267
>>963264
Попробовал на 3.9.0, поржал. Я так понимаю, >>963249 официально соснул хуев.
963375
#91 #963268
Я пришел к вам из C# иди нахуй отсюда чмо. Посоветуйте актуальных ресурсов (желательно сайты) с введением в многопоточность в C++. А то что-то тут совсем не Thread'ы и Task'и у вас, или я ничего не нашёл.
963269963271963304
#92 #963269
>>963268
inb4 иди нахуй отсюда чмо*
#93 #963271
>>963268
Книга Эндрю Вильямса
963272964038
#94 #963272
>>963271
или Энтони... нипомню
#95 #963304
>>963268
man openmp
OpenMP
penMP
enMP
nMP
MP
P
963342
#96 #963313
>>963164
Спасибо.
Я кстати обдумал чего же я хочу от этой библиотеки и понял, что правильнее будет самому реализовать дерево.
#97 #963342
>>963304
Это крайне узкоспециализированное применение многопоточности
#98 #963375
>>963267
>>963261
А теперь немножечко более живой пример, с парой хуиток которые компилятор не может просто взять и выкинуть (я конечно понимаю, что местным похуй, и самое главное статичные данные известные на этапе компиляции обернуть в смартпоинтер, но всё же попробую достучаться):

http://godbolt.org/g/MYKEIl
http://godbolt.org/g/DdfGm4

Разница по количеству инструкций всего-то в... 2 раза.
963381963496963499
#99 #963377
>>963261

>И еще он в 93ьем написал свою уебищную STL и до сих пор ее использует. Это не ты случаем?


Не, братан, я вообще STL в рот ебал. Хотя в чём-то с этим стариком солидарен — лучше уж свой костыль, в действиях которого хотя бы можно быть уверенным и который спокойно будет рефакторится и отлаживаться без ебли в сральник.
#100 #963381
>>963375
Ловите поехавшего, он на пушах экономит. Пуш занимает 1 цикл, как и add. ОДИН БЛЯТЬ ЦИКЛ.

У меня 15 лет назад компьютер триллион циклов в секунду выполнял и не парился.
963384
#101 #963384
>>963381
Когда твоя залупа в кэш пролезать перестанет — расскажешь, нахуя вообще подобные настолько низкоуровенные языки.

Вот серьёзно — в твоей ситуации видимо можно сразу на го хуячить, там сборщик почти без задержек, чо бы и нет-то?
963394
#102 #963394
>>963384
Если колл стек твоего приложения не вмещается в l3 кеш - ты занимаешься каким-то пиздецом (еще и с нестандартными настройками кнопилятора). Если это компулсори мисс, то и ты и я будем ждать 300 циклов в любом случае пока твоя и моя залупы загрузятся из памяти.
#103 #963415
>>963261

> он в 93ьем написал свою уебищную STL и до сих пор ее использует.


Все правильно сделал. В любой более-менее нормальной конторе пользуются собственной библиотекой шаблонов.
963477963488
#104 #963462
Почему в этом коде возникает ошибка?

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string s = "word";
string t = s + s[s.size() -1] == 's' ? "" : "S";
}
963476
#106 #963477
>>963415

>Все правильно сделал. В любой более-менее нормальной конторе пользуются собственной библиотекой шаблонов.


Вся суть крестов: нахуй нам нормальная стандартная библиотека, мы лучше будем велосипеды делать.
#107 #963488
>>963415
Назови еще парочку, кроме фейсбука и блумберга?
963490963516
#108 #963490
>>963488
Весь гейдев, например. Гуглани EA stl
963516
#109 #963496
>>963375

>Разница по количеству инструкций всего-то в... 2 раза.


С unique_ptr 22 инструкции
C голым указателем 18
22/18 = 11/9 = 1.(2)
Даже близко не в 2 раза.
Или ты, дебил, в случае unique_ptr с 25-й по 47-ю строки тоже считал?
#110 #963499
>>963375

>Разница по количеству инструкций всего-то в... 2 раза.


Как оказалось, разница даже не в 1.25 раза и это при том, что код с unique_ptr не течёт при эксепшенах.

Приведи немножечко более живой пример, где экспепшены могут быть и гарантируй то же отсутствие утечек для голого указателя с помощью try-catch блоков. После этого попробуем посчитать инструкции, ха-ха.
#111 #963516
>>963488
>>963490
Двачую этого. Даже Кармак для своей id свои шаблоны написал, можешь погуглить
963517
#112 #963517
>>963516
10 лет назад то?
#113 #963538
>>963476
Где и какие?
#114 #963605
Какого хера clion не может показать содержимое умных указателей сижу на винде, вдруг это важно?
963709
#115 #963709
>>963605
Баг им забей
963732
#116 #963732
>>963709
Уже есть такое предложение. Остается только ждать. Я лично думаю, что хотя бы дебаггер для MSVC было бы неплохо заиметь для начала, но с другой стороны у меня треть кода в проектах красная.
#117 #963741
Хочу вкатиться в Boost/Asio но не знаю, что написать, какие есть идеи? (Http-сервер не предлагать)
963746963749
#118 #963746
>>963741
Ну сделай тогда другой сервер. Не обязательно же веб. Запили брокер, прокси или еще что.
#119 #963749
>>963741
сделай чатик с поддержкой регистрации, комнаток и приватов.
965474
#120 #963772
Где можно найти кроссплатформенный макрос для эскспорта из динамической библиотеке? Хочу собирать .so и .dll с помощью GCC
Писать
__attribute__ ((visibility ("default")))
и
__attribute__ ((dllexport))
перед каждым классом или перед публичными методами тоже?
963776963803
#121 #963776
>>963772
И вот ещё в догонку вопрос, как в cmake сделать подпапку как цель сборки? То есть когда пишешь
make test
cmake запускает
subdirs(tests/)
tests/test_executable

В tests/ лежит другой CMakeLists.txt, который собирает test_executable

Сейчас я просто написал subdirs(tests/) и тесты собираются вместе с основным проектом, это нехорошо
#123 #963809
Почему на QSslSocket получилось натянуть только HttpProxy?
"Connection to proxy closed prematurely" -- Socks5Proxy
#124 #963924

>std::__cxx11::basic_string


В новых версиях GCC выхлоп темплейтов стал ещё грязнее, теперь так всегда будет?
963934963974
#125 #963934
>>963924
ты поехавший чтоле?
Чем тебе неймспейс не угодил?
#126 #963974
>>963924
ШтО?
43 Кб, 693x227
#127 #963992
>>963803
Вот так сойдёт?
#128 #964038
>>963271
Энтони Уильямс
Параллельное программирование на С++ в действии
https://www.ozon.ru/context/detail/id/135511867/
#129 #964237
Двощ, 17 студию научили отображать юникод?
964265964276
#130 #964265
>>964237
У меня и 15 отлично отображает.
964276
#131 #964276
>>964237
>>964265
Что ты имеешь в виду?
#132 #964375
Двач, что-то не гуглится нубский вопрос, подскажи, можно ли явно удалить локальный объект?
{
Или единственный вариант это только загонять его в область видимости?
}
#133 #964419
>>964375
Обьект на стэке умирает по выходу из стэке.
Т.е. да, уебанские фигурные скобки, и ничего больше. Возможно, разделить куски кода на лямбды и их дергать, что, практически, тоже самое
964423
#134 #964423
>>964419
С лямбдами это будет смотреться еще паршивее, ИМХО.
#135 #964447
>>964375
Yoba ж yoba = new Yoba;
delete yoba;

Yoba yoba;
yoba.~yoba();
964449964455
#136 #964449
>>964447
Идиот, это удаление объекта на куче а не удаление локального объекта.
sage #137 #964455
>>964447

>yoba.~yoba();


ub
#138 #964498
>>964375
А смысл, если место на стэке всё равно не освободится. Ты хочешь постоянно создавать и удалять объект в одной области видимости? Или освободить ресурс?
#139 #964524
>>964375
Не гуглится потому, что некорректный вопрос. Что ты имеешь ввиду под локальным объектом?
То, что имеет смысл "удалять", на стеке не хранят.
964613
C+=1 + ASM #140 #964526
Всем здарова. Где-то год назад видел, но потерял. Толстенький pdf, где разные куски кода С++ дизассемблили и разбирали, что получается. Получилась такая специфическая книга по реверсу, си++ и оптимизации. Мб кто-нибудь видел такое
964543967427
#141 #964543
>>964526
Гугл говорит, что это может быть:
"Использование ассемблера для оптимизации программ на С++", Юрий Магда, 2004
964563
#142 #964563
>>964543
Точно не это. Не помню, на каком языке была книга, но это был raw pdf, не скан. Излагалось все живо, не академично.
549 Кб, 3870x1360
#143 #964591
>>962830
>>962004
>>961975
>>961931
>>961924
>>961919
>>961912
>>961905
Все до одного в глаза ебётесь. Сейчас я enhance эту картинку для вас, уебанов.
964593
sage #144 #964593
>>964591

>enhance


Это называется zoom, уебан.
964594964614
sage #145 #964594
>>964593

>zoom


В крайнем случае magnify
964614
#146 #964596
>>962316

>Как вызывающий класс понимает что это?



Если классу не видно объявление энума - никак.
#147 #964599
>>962393

Запросто: обязать всех авторов ОС делать ABI. "Мусолить" не означает "сочинить ABI".
964600
sage #148 #964600
>>964599

> "Мусолить" не означает "сочинить ABI".


Не сочинять, а чтобы у каждого был свой ABI?

> обязать всех авторов ОС делать ABI.


Да их и обязывать не надо, они сделали каждый свой ABI. Короче, проблемы нет.
964615
#149 #964602
>>962526

Мануал открой, он встроен в креактор.
#150 #964604
>>962890

>Схема


>QEventLoop name;


>printf("LOOP")


>name.exec();


>


>Работает только 1 раз.



Какое же ты уёбище... С какого хуя она должна работать больше одного раза? printf ты куда сунул?
964608
#151 #964608
>>964604

>С какого хуя она должна работать больше одного раза?


Ну луп это же типа goto. name.exec() делает переходит к QEventLoop name.
#152 #964613
>>964524

This.
#153 #964614
>>964594
>>964593

Ну уж нет, я назову это enhance.
#154 #964615
>>964600

>Да их и обязывать не надо, они сделали каждый свой ABI.



Сделали, но не стандартизировали.
964617
#155 #964616
>>964608

>Ну луп это же типа goto.



Пальцем в жопу.

>name.exec() делает переходит к QEventLoop name.



Блядь, я не засну сегодня.
964618
#156 #964617
964685
#157 #964618
>>964616

>Пальцем в жопу.


Пальцем в жопу это не луп. Вот если рот к жопе пришить, может луп получиться.
Но вообще goto назад это луп.

> Блядь, я не засну сегодня.


Что не так?
964619
#158 #964619
>>964618

>Что не так?



Никакой код в C++ не может перейти куда-то без слов for while goto if или вызова функции или longjmp или чего-то из этого в макро.
#159 #964620
+ catch try
#160 #964665
>>964608
Хех, кодить, не почитав доки или хотя бы не имея примеры.
#161 #964677
Господа из ДС2, думаю о том, чтобы попробоваться в Транзас, если в чонить более успешное не выйдет.
Сейчас работаю в мелкой конторе без юнит-тестов и нормального цикла тестирования вообще, без проработки архитектуры и всякого такого прочего.
План - поработать годик в конторе, где все это есть и набраться опыта.
Кто-нибудь там работал, есть что рассказать?
964841
#162 #964679
>>964608
Ихихихи, ну ты и лалка.
QEventLoop занимается тем, что продолжает выполнение запланированных событий (которые были вызваны QueuedConnection или BlockingQueuedConnection способом), при этом, если его завершить, то сначала завершится обработчик активного события, а потом продолжится выполнение твоего кода после QEventLoop::exec()
#163 #964685
>>964617

Ссылку на ABI для Windows предоставь, плес.
964686
#164 #964686
>>964685

>Windows


Это говно никому не интересно.
964706964723
#165 #964706
>>964686
прыщеблядок, плс
#166 #964723
>>964686

Это говно занимает большую часть рынка пользователей ноутбуков и пекарен, так что твоему работодателю это говно вполне может быть интересно.
964725
#167 #964725
>>964723
Многие работодатели интересуются у тебя знанием ABI?
964730
#168 #964730
>>964725

Есть много библиотек без открытого кода и скомпилированных одним компилятором. Ты не сможешь использовать их из другого компилятора.
964741
#169 #964741
>>964730
И как тебе знание ABI помогает решить эту проблему?
964782
#170 #964757
Как сделать чтобы объект целиком был в другом треде? Хранить std::thread и делать detach() в конструкторе?
Когда из основного потока вызываются методы класса, они ведь в другом потоке будут выполняться?
Когда-то работал с тредами в Qt, сейчас уже всё забыл
964764
#171 #964764
>>964757
Ты хочешь ActiveObject.
#172 #964782
>>964741

Какое ещё знание АБИ, пидор? Стандартизация АБИ, а не его знание.
964788
#173 #964788
>>964782

>Стандартизация АБИ


Да не будет этого никогда, долбоёб.
964901
#174 #964841
>>964677
то что у них постоянно висят вакансии еще не значит что тебя возьмут
964844
#175 #964844
>>964841
Возьмут, почти наверняка.
Есть пара вакансий, по которым я полностью прохожу по обязательным условиям и по большинству дополнительных.
Ну и объективно я не особо говнокодер, способен закодить что-нибудь на бумажке, архитектуру гибкую набросать, в алгоритмах разбираюсь и даже в общение могу.

Вопрос же всё-таки не о том, возьмут ли меня, а в том, стоит ли туда идти?
964854
#176 #964854
>>964844
У них вакансии открыты годами, оптимистичный ты наш совсем-не-говнокодер, но сходи, с тебя не убудет) А вообще сейчас как-то много сионистов из транзаса бегает по собеседованиям.
#177 #964894
Как быть с декструктором объекта данные которого перемещены через std::move()? Везде хранить поле bool is_moved чтобы не выполнять деструктор дважды?
http://ideone.com/Eu11FI
#178 #964896
>>964894

>Как быть с декструктором объекта данные которого перемещены через std::move()?


Перемещение должно оставлять объект в пригодном для разрушения виде.

> Везде хранить поле bool is_moved


Обычно это не нужно.
#179 #964901
>>964788

MS shill, pl0s.

>>964894

Примерно так - деструктор всё равно выполнится ведь. Можешь оставлять пустые ссылки или ссылки на пустые объекты.
#180 #964909
>>964894
move, в основном, нужен для двиганья указателей. Просто в обьекте откуда муваешь, ставишь указатель на nullptr, и все ок
964929964934
#181 #964929
>>964909

>move, в основном, нужен для двиганья указателей. Просто в обьекте откуда муваешь, ставишь указатель на nullptr, и все ок


Блять, один нюфаг который хочет дебильной хуйни, второй либо тоже нюфаг либо просто дебил.

move() только то и делает, что свапает указатель с нулптром (но стандартом это не оговаривается, как минимум в одной из версий гцц указатель просто копировался — ведь п-перформанс жи, так что надо смотреть в конкретной реализации std), данные он вообще никак не трогает.
964930964948
#182 #964930
Один >>964929 толще другого >>964608
#183 #964934
У меня вот вопрос к эвангелистам раста вроде этого >>961847 — вы серьёзно считаете что ваша хуйня может стать широкоиспользуемым языком, пока тут пол треда задают вот такие вот вопросы
>>964894
и вот такие вот ответы за три сотни
>>964909
?
#184 #964948
>>964929
Как хуйня, которую ты написал, соотносится с заданным вопросом?
964955
Dmitry #185 #964953
Разумно ли начинать проэкт на С, и перекатывать на плюсы только если есть небходимость и перекатывать не все?
964956
#186 #964955
>>964948
Мой ответ касается в первую очередь того ответа, но и твой вопрос покрывает — просто проверяй свой указатель в деструкторе перед удалением. Ну или просто иди нахуй
964957965066
#187 #964956
>>964953
Определись что тебе вообще нужно и задай вопрос нормально.
964964
#188 #964957
>>964955
ты зарабатываешь деньги, программируя на C++?
#189 #964960
Неофит ИТТ. Недавно перешел на cpp с C#, пишу в visual studio. Насколько я знаю, в VS VC++. Дак вот, проект cpp в VS компилируется в байт-код как проект на C#, или только если в настройках cpp проекта включить "Использовать CLR"?
Или все проекты VC++ в VS хуячатся напрямую в машинный код и для запуска никакие .net'ы не нужны?
964966
Dmitry #190 #964964
>>964956
Ну вот GCC был на С написан, а потом его переписали, насколько знаю весь, возникли проблемы с бутстрапом и стандартами.
Все порешалось, но теперь компилятор собирается хуй знает сколько, выжирая кучу места на диске.
Это же простая утилита по сути.
964978965002
Dmitry #191 #964966
>>964960
Ебать у вас курятник там. Попробуй clang-ом статически собрать. Запусти в песочнице без нихуя.
#192 #964967
>>964894
Это поможет:
http://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom

Ответ на вопрос где-то в конце, но почитать всё равно не помешает.
#193 #964970
>>964894
Это тоже поможет лучше понять, что происходит:
http://ideone.com/cyln7z
#194 #964973
Можно сделать темплейт чтобы убрать указание типа при вызове функции? http://ideone.com/ca7dQt
У меня не получается, компилятор так пытается кастовать один тип в другой
964975
#195 #964975
>>964973
у вас Undefined Behavior с референсом на уничтоженный обьект
964976
#196 #964976
>>964975
Компилятор выдаёт ворнинг если убрать std::move, а так ему норм, по идее всё правильно работает
964980
#197 #964978
>>964964
Жырна
965016
#198 #964980
>>964976
Так нельзя делать. У тебя после выхода из функции объекты рипаются. Всё это работает только потому, что у тебя данных реальных нет.
964990
#199 #964989
Объясните использования constexpr для типов, зачем их применять?
964998
#200 #964990
>>964980
Ладно, пришло время окончательно закопать идею с полиморфизмом на стеке
Я хотед сделать оператор, например [], чтобы можно было вытаскивать переменные через префикс
scalar = perl["$var"]
array = perl["@var"]

Когда доделаю весь функционал придётся всю работу с переменными переделать на указатели, на стеке слишком много ограничений
965028
#201 #964993
Почему везде пишут, что мол нехер использовать printf() в сабже? Я ебал хексы выводить
964996965056965067
#202 #964996
>>964993
потому что не тайпсейф ни разу.
#204 #965002
>>964964

>Это же простая утилита по сути.



Вон из профессии.
965016
#205 #965010
>>964998
Чому тогда не сделать все функции констэкспр, авось попадёт подсчёт в компиляцию?
965014
#206 #965014
>>965010
Вероятно, ты не сможешь завести программу, если везде повесишь. Ну и если вдруг тебе придётся в этом случае убрать constexpr, следом упадут связанные функции.
#207 #965016
>>965002
>>964978

>перевести код на cпецифический asm в зависимости от процессора


Может тада еще boost добавить надо было?
#208 #965028
>>964990

>полиморфизмом на стеке


делается через ссылки..
965043
#209 #965029
>>961839 (OP)

Привет, аноны. Не знаю, туда пишу или нет. В общем, хочу вкатиться во фриланс. Чего умею - писать коды на c++ для определенных целей, занимаюсь этим постоянно года 2 или 3 по работе. Чего хреново умею - шарить в оптимизациях, всяких утечках памяти и прочей программистской кухне сам по образованию не программист, на работе использую C++ только как костыль для решения конкретных небольших задач, прогами этими пользуюсь в основном только я, иногда коллеги, которые прогать умеют еще хуже, чем я. . В общем, как такие днища навыки применять, чтобы помимо основной работы можно было наварить около 10 рублей, работая раз в неделю? С чего начать?
965030965258
#210 #965030
>>965029
*10 тысяч рублей в месяц
#211 #965043
>>965028
Ну так посмотри на ideone, как там через ссылки сделать?
965048
#212 #965048
>>965043
Просто если сейчас я могу сделать

perl.getScalar("my_variable").setValue("huita")

придётся писать

Scalar ж var = perl.getScalar("my_variable")
var->setValue("huita");
delete var

(при том что Scalar содержит указатель на Си данные, которые продолжат жить в куче)
ёбаный стыд...
Как-то занимался играми, там из-за наличия основного цикла и событий легко подчищать умершие объекты, а тут нихуя, бери и пиши сборщик говна с нуля
965054965055
#213 #965054
>>965048

>Scalar ж var = perl.getScalar("my_variable")


>var->setValue("huita");


>delete var



Чо.
965062
#214 #965055
>>965048
А, я понял. Так shared_ptr ебани может?
965107
#215 #965056
>>964993

>Я ебал хексы выводить



Родина дала ему output modifier, но нет, он хочет жрать говно.
#216 #965062
>>965054
Грубо говоря
class Scalar
{
InternalScalar ж ptr;
...куча методов...
} ;

class Array
{
InternalArray ж ptr;
...куча методов...
} ;

Учитывая что они хранят всего лишь указатель и не контролируют его (этим занимается интерпретатор с подсчётом ссылок), логично размещать все объекты на стеке

Но без наследования от общего предка с приведением типов туда-сюда архитектура слишком ограниченная, придётся возвращать new Scalar из функций
965090965105
#217 #965066
>>964955

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


На что проверять, довен?
#218 #965067
>>964993
libfmt
#219 #965090
>>965062
Ну так выводи объект. Тебе что-то мешает это сделать?
965105
#220 #965098
динамический полиморфизм (на вирт функциях) работает через косвенные обращения - через указатели для объектов созданных в куче, через ссылки для объектов созданных на стеке или в глобальной памяти..
статический полиморфизм реализуется через шаблоны..
ad hoc полиморфизм посредством перегрузки функций..
#221 #965103
ты там биндинг перла хочешь прикрутить? какую конкретно задачу делаешь?
алсо, можешь расшарить свой код - я могу помочь..
965144
#222 #965105
>>965062
>>965090
Эм. То есть выводи объект вместо ссылки.
965109
#223 #965107
>>965055

>shared_ptr ебани


Из фабрик принято возвращать unique_ptr, кагбэ говоря "лайфтайм этого объекта полностью под твоим контролем"
965184
#224 #965109
>>965105
Куда? (A)B() в c++ не работает если что
965124965127
#225 #965124
>>965109
Ну можно запилить ссылку и её уже закастить.
#226 #965127
>>965109
Да и вообще, так ли уже тебе нужны 2 класса? В контексте того, что ты нам показывал - это изврат. А что там тебе в реале нужно, ты ещё особо не показал.
116 Кб, 628x692
#227 #965144
>>965103
Задача - аналог liblua, достаточно быстрый для использования в играх
Основная проблема - прямой вызов С++ функций внутри eval() и require(). Пришлось сделать XS модуль, через который можно в рантайме создать функции в main:: или другом пакете и из них вызывать С++ коллбеки. Вызов получается не прямой, зато есть полный контроль над стеком, то есть в созданной функции можно свободно принимать и возвращать массивы
Может тебе известен другой способ? Я весь интернет перерыл в поисках

Код может залью через пару дней, сначала надо определиться с моделью хранения указателей на переменные, чтобы избавиться от вот этого пиздеца (везде должно быть Variable)
965174
36 Кб, 697x276
38 Кб, 432x310
#228 #965174
>>965144
Вот ещё как внутри работает и yoba-оператор[], в который благодаря полиморфизму через префиксы можно вместить все остальные методы
#229 #965177
Пикча треда - 10/10С
Спасибо, сохранил.
965186
#230 #965179
Какие то вопросы в треде освещаются скучные.
Я тут ожидал больше архитектурно-концептуальных ответов, а тут один неосилятор доказывает другому как с его точки зрения STD работает правильно.
965180965183
#231 #965180
>>965179
Под это отдельный тред нужен. Можешь создать, если не влом.
965185
#232 #965183
>>965179
Пили перекат.
#233 #965184
>>965107
Програмчую, фабрике владеть этим указателем большого смысла далее нет.
Но геморой может быть с уникальным указателем на куче, случайно можно проебать, если реально где-то в разных местах используется.

Тут точнее говорить - либо фабрика должна отдавать шаред ибо таков замысел - фабрика шаредпоинтеров, или же очень внимательно следить за циклом жизни в скопе.
#234 #965185
>>965180
Так оно и интересно.
Нахуй мне тут про стандарты читать и спорить о их реализациях, когда это справочная информация.

Реально в работе возникет огромное множество архитектурных вопросов и вопросов дизайна.
#235 #965186
>>965177
Оригинал не поместился, был 7.5мб, ищи в блоге AlenaCPP
965194
#236 #965192
Ананасы, почему глобальные объекты - плохо?
965195
#237 #965194
>>965186
Я уже отгуглил 2017 версию.

Пикча хороша.
#238 #965195
>>965192
Поразбирай парашу, написанную с их применением.
В десятках часах, разыщи же ту строчку кода, которая сука меняет состояние этого объета.
Убедись, что другая строчка кода в двух папках левее в другом cpp перезатирает состояние объетка, и от этого все работает хуй пойми с какой предсказуемостью..

А потом возвращайся, и дай нам ответ на этот вопрос.
965197965198
#239 #965197
>>965195
P.S. гне константные лобальные синглтоны - тоже зло.
#240 #965198
>>965195
Так, хорошо. Но как быть с теми случаями, когда доступ к какой-нибудь хуйне нужен часто и из очень разных классов например в какой-нибудь QStatusBar сообщения всякие передавать?. И где о таком вообще можно почитать что-нибудь?
Если не понятно, что я хотел сказать, могу постараться поподробнее объяснить
965199965203
#241 #965199
>>965198
Я бы наследовал от CanChangeStatusBar а там уже внутри методов пускай конфликты разрузиваются
#242 #965203
>>965198
Создаешь интерфейс IStatusBar.
У него метод IStatusBar::addMessage(const std::string& message) = 0;
Твой статус бар реализует этот интерфейс.
Передавай этот указатель туда, где нужно его использовать по иерархии композиции.

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

Другой пример - интерфейс доступа к настройкам.
Казалось бы, настройки приложения реально глобальные. И делай их глобальными. И да, можно, если каждая сущность хранит их в своей секции. Но как только кто-то начинает менять настройки другой, чужой сущности - тут начинается херня, и делать так не стоит.
965205965209
#243 #965205
>>965203
Это такой Java-way стиль.

Qt например предлагает хороший инструмент сигналов и слотов (обертка над указателями на методы), при помощи них тоже можно хорошо разрешить ситуацию.
#244 #965209
>>965203
Если честно, то я не совсем понял, а чем это лучше. Ведь точно также все эти классы будут тащить указатель на мой statusBar. И точно так же я буду разгребать это говно
965211
#245 #965211
>>965209
В твоем случае используй то, что лучше вписывается в общую архитектуру.
Если нигде не использовал интерфейсы - то не используй.
Если везде тащил указатели - используй указатели.
Если синглтоны - то синглтон.
Решение должно быть обосновано как-то и гармонично. Ты обосновал - часто требуется доступ из разных мест, за гармоничность тебе решать.

И в твоем случае, обезательно передавай в метод - кто послал сообщение, иначе не разгребешь.
#246 #965221
Вроде получилось пнуть компилятор чтобы генерировал любое количество версиий одной функции http://ideone.com/eJl8Cv
Пускай код засран, зато всё чистенько на стеке
965233
79 Кб, 743x387
#247 #965233
>>965221
А вот так получается выглядят сигнатуры всех моих шаблонных методов. Каждый вариант пишется вручную, там всё равно разные си-функции дёргаются везде
Завтра займусь реализацией
#248 #965258
>>965029
Днищефриланса на плюсах нет.
#249 #965288
Что такое WinAPI в объявлении функции типа
int WinAPI winMain(int argc, char* _args){}
?
Где можно почитать об этих квалификаторах или как там мать их?
965292
#250 #965292
>>965288
WINAPI is a macro that evaluates to __stdcall

Всё просто.
965350
42 Кб, 489x521
#251 #965294
Анон, помоги, в чём тут ошибка? Всё же блядь вроде корректно написано
965299965300
#253 #965300
>>965294
Поставь нормальную IDE вместо педальной параши.
Visual Studio или QtCreator, например.
965365965393
#254 #965303
>>965299
Охуеть, сколько лет уже это говно не фиксят.
#255 #965318
C++ говно без задач.

С-бог
#256 #965350
>>965292
Ну а что значит после типа возвращаемого значения и перед именем функции этот __stdcall?
#259 #965355
>>965350
Какое-то очередное нарушение стандарта языка в исполнении MS, можешь в службу поддержки написать.
#260 #965357
>>965350
Long ago, in a distant past, когда вызов функции был чуть более, чем обычным goto с сохранением адреса возврата, надо было придумать, как передавать туда параметры и как получать результат. И разные люди придумали и использовали разные способы - кто в стеке, кто в регистрах, а кто вообще в памяти. Так что вызывая какую-либо неизвестную функцию, она вполне могла невозбранно затереть твои регистры, не предупредив. Стало быть нужно помечать, какая функция как работает с параметрами, так и появились конвенции о вызове.
#261 #965365
>>965300
Поставь нормальную IDE
@
QtCreator
29 Кб, 1280x720
#262 #965393
>>965300
Поставил нормальную IDE Eclipse, теперь всё собирается. Странно, всегда щитал нетбинс годнотой, по крайней мере в проектах на php и js оно меня ещё так не подводило
965405965420
#263 #965405
>>965393
а ты любишь сорта говна
965406
#264 #965406
>>965405
Просто Visual Studio на моем железе 90% времени будет висеть в Not Responding
965407965408
#265 #965407
>>965406
Тогда qtcreator твой выбор, эклипс на джаве написан и вряд ли летать будет
#266 #965408
>>965406
Чет тоскливо. Плохо себе представляю, как можно получать удовольсвтие от кодинга на тормозной машине. Может купить старенький Сэнди-бридж на авито тысяч за 10?
965410965413
#267 #965410
>>965408
А с ним новую мать, бп, под новую мать ещё обновлять оперативку и кулера.

Я конешно не тот анон, но тут половина вкатывальщиков — студенты и школьники из мухосраней, для них это проблема.
#268 #965413
>>965408
У меня Ivy Bridge, что вроде бы даже новее чем Сэнди. Ты уверен что на б/у говне за 10к студия будет идти лучше, чем на игравом ноутбуке за 60к?
965414965417
#269 #965414
>>965413

>ноутбуке


>низковольтажная мобильная залупа


/0
965415
#270 #965415
>>965414
Ну не таскать же системный блок в универ...
#271 #965417
>>965413
У меня у самого айвик, студия летает. Хз
#272 #965420
>>965393
Твоя проблема в том, что программировать надо головой, а не IDE.
Студийные макаки обмажутся своими гигабайтными тормозными монстрами и потом не могут высрать ни строчки кода без них.
965432965453965456
#273 #965423
Аналог boost::format кто знает?
Нашёл это http://ideone.com/BJAaKM , но оно не работает с std::string и насчёт безопасности есть сомнения
965430965436
#274 #965427
Обмазался тут новыми инициализаторами, возник вопрос.
Можно ли использовать запись std::vector {5}, чтобы создать вектор из пяти пустых элементов, как в случае std::vector(5)? Но создается вектор с одним элементом - пятеркой, видимо из-за конструктора, принимающего initializer_list.
Можно ли добиться такого поведения со фигурными скобочками? Хочу использовать такую инициализацию везде вместо обычных скобок.
965429965431
#276 #965430
>>965423
И ещё это https://gist.github.com/en4bz/f07ef13706c3ae3a4fb2 , работает со всеми типами на шаблонах, но нельзя использовать символ % если он не заменяется на строку.
#277 #965431
>>965427
А, я подумал, что ты не можешь вектор определённого размера сделать.
А ты просто наркоман.
#278 #965432
>>965420
Друг, сейчас не каменный век
#279 #965436
>>965423

>Аналог boost::format кто знает?


fmtlib
965439
#280 #965439
>>965436
Нету в репе дебиана.
Ссылка на гист хорошая, туда бы только конструкию \% добавить и всё что нужно будет в одном хедере.
965445
#281 #965445
>>965439

>Нету в репе дебиана.


https://packages.debian.org/sid/libfmt3-dev
#282 #965453
>>965420
Ты из тех, кто использует notepad++?
965454965485
#283 #965454
>>965453
gedit, vim
965458965462965471
#284 #965456
>>965420
Ловите вимоёба.
#285 #965458
>>965454
Пукнул тебе в лицо
(Автор этого поста был предупрежден.)
#286 #965462
>>965454
Ох лол. ИЛИТА в треде. Прости, я сейчас пойду удалю студию, и винду даже удалю. Поставлю LOONIX без иксов даже, и буду в виме пердолиться. Ведь результирующий продукт и скорость разработки не важны. Важно, что ты ИЛИТА и пердолишься в ВИМЕ
#287 #965463
>>965462

>скорость разработки


От редактора зависит дай бох на 2%.
965466
#288 #965464
>>965462
Не забудь мышку выкинуть
#289 #965466
>>965463
Я тоже так думал, пока меня не пересадили со студии. Красноглазая залупа и хваленый ДЖЕТБРЕЙНС даже близко не валялись. А что там в виме - мне даже страшно представить.
965482
#290 #965471
>>965454
Владелец квантового кластера? Если запихнуть вим мегабайты VimScript через плагины и довести фунционал до сносной IDE, он будет работать медленее студии.
965473
#291 #965473
>>965471
Я первым написал gedit. vim я пользуюсь иногда.
965475
#292 #965474
>>963749
всё уже написано
там е консольный чатик
http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/examples.html
965477
#293 #965475
>>965473
Gedit тоже выкинь и поставь Geany, с виду то же самое но настраивается круто, по скорости работы уделавает всех включая Gedit.
#294 #965477
>>965474
там есть регистрации и комнатки? Можно еще операторов чатика реализовать.
#295 #965482
>>965466
Вим это обыкновенный текстовй редактор. А вот что такое есть в студии, чего нет в продуктах от джетбраинс?
#296 #965485
>>965453
qt creator, atom, kdevelop, gnome builder, sublime text, emacs, vim.
Это неполный список легковесных и быстрых сред разработки. А ты иди скачай еще один апдейт студии на 5 гигабайт.
965486965488
77 Кб, 572x732
#297 #965486
>>965485

>легковесных и быстрых сред разработки


>atom

965489
#298 #965487
>>965462
ПРОГРАММИСТ ПОД ШИНДОВС, как же забавно это звучит.
965641
#299 #965488
>>965485
Можешь свое говно засрать себе обратно.
#300 #965489
>>965486
Да, среди перечисленных он самый тормозной.
Но все равно выигрывает на фоне говна на джаве, моментально отжирающего всю память и студии, которая весит 10 гигабайт и устанавливается два часа.
75 Кб, 435x827
#301 #965490
Слава шаблончикам
965491
#302 #965491
>>965490
Ебать ты бешенный. Что-то мне подсказывает, что даже с шаблончиками эта хренотень будет работать так себе, если честно.
965494965502
#303 #965494
>>965491
Хотя не, для специализированных типов будет нормально.
#304 #965502
>>965491
Со stringstream просто костыль чтобы что-нибудь вернуть, если кому надо пускай определяет stringstream::operator>> для своего типа
sage #305 #965513
>>965462

> Прости, я сейчас пойду удалю студию, и винду даже удалю.


Да всем похуй на тебя, долбоёб.
#306 #965540
Программисты 300к\сек, подскажите, нахуя нужен динамический массив?

>при объявлении статического массива, его размером должна являться числовая константа, а не переменная. В большинстве случаев, целесообразно выделять определенное количество памяти для массива, значение которого изначально неизвестно.


Но я все равно не вхуяриваю, для чего это надо. Если сказано, что должна быть константа, но почему бы после получения размера массива от пользователя просто не использовать ту переменную. гуглил - нихуя.
И что за некий указатель p_darr?
965544965553965560
sage #307 #965544
>>965540

>И что за некий указатель p_darr?


Не ведитесь, посоны. Это репост с другого ресурса.
965546
#308 #965546
>>965544
Что тебя смутило? Я действительно не знаю. Гугл мне толком ничего не выдал по этому запросу
965556
82 Кб, 549x925
#309 #965553
>>965540

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


Потому что константа, определяющая размер массива, должна быть известна на этапе конпеляции. Очевидно, что статический массив находится прямо в экзешнике, и поэтому ресайзить его там не вариант. А динамический создаётся в рантайме в куче, которую выделяет для процесса ОС, а в куче выделяй/удаляй - не хочу
965575
#310 #965556
>>965546
Тому что константы должны быть вычислимы в момент компиляции программы. Виталик вводит свою циферку после компиляции программы -> константа не вычислима.

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

Динамический массив выделяется на куче, а на стеке выглядит как один указатель (размер которого известен компилятору)
965575
#311 #965560
>>965540
Если нужно небольших размеров динамический массив только на время выполнения функции, можешь воспользоваться функцией alloca или _alloca (одно и то же, по сути, только названия разные для разных компиляторов). Если нет - то тогда new[SIZE] и освободить не забудь при помощи delete[]. А еще лучше используй std::vector.
965575
#312 #965575
>>965553
>>965556
Так, подождите. Как я понял, то получается, что статический массив создается в памяти, которая уже используется для открытия программы, а динамический использует свободную память, которая есть в комплюктерне, так?
>>965560
В том то и дело, что пока надо разобраться с new и delete.

Повторю вопрос - что за указатель p_darr?
965578965580
#313 #965578
>>965575
https://ru.wikipedia.org/wiki/Стек_вызовов

>указатель p_darr


Это и есть твой массив
OP* p_darr = new OP[100];
965586
#314 #965580
>>965575

>p_darr


Ну это же ребус епта.
Это значит что ты p-dar ПИДАР
965586
#315 #965584
http://ideone.com/H9UTH6
Как сделать ParamT шаблоном, при том что ReturnT указан явно?
Я так понял нужно что-то вроде
template<class ReturnT, template<class ParamT> >
но как это сделать не ясно, на SO везде сраные template<class> Containter, а не отдельные методы
965590965591965592
#316 #965586
>>965578
Таакблятьнахуй, я совсем запутался.
Вот кусок кода

int main()
{
int num;
cout<<"Vvedite kolichestvo elementov massiva\n";
cin>>num;
int p_darr = new int[num];
for(int i=0;i<num;i++)
{
p_darr=i;
cout<<"i = "<<i+1<<" p_darr = "<<p_darr<<endl;
system("pause");
}
delete [] p_darr;
system("pause");
return 0;
}

И ты мне пишешь OP
p_darr = new OP[100];
К чему мне блять обращаться? К p_darr как у меня или к OP[100]?
>>965580
Я уже понял это
965587
#317 #965587
>>965586
http://ideone.com/
для начала
#318 #965590
>>965584
SFINAE используй, иначе никак по-моему,
965596
#319 #965591
>>965584
function template partial specialization is not allowed
#320 #965592
>>965584
Не знаю насчёт ответа, но можно полистать это:
http://en.cppreference.com/w/cpp/language/template_argument_deduction
#321 #965596
>>965590
http://ideone.com/yW83GW

Посмотри здесь. Только на идеоне он не работает, запусти, например, на http://cpp.sh
7 Кб, 737x100
11 Кб, 899x146
9 Кб, 898x107
46 Кб, 867x371
#322 #965604
Мимо программист не на C++ бугурт. Вот нахуй вы так делаете? Нахуй эти постоянные #define и typedef для каждого чиха? Ладно, допустим для большей ясности вы создаете макрос для оператора/модификатора/квантификатора, но почему вы тогда не можете использовать только 1 вариант?
7 Кб, 737x100
4 Кб, 502x69
#323 #965605
>>965604
И еще нах
965607
24 Кб, 875x119
#324 #965607
>>965605
APIENTRY определен как WINAPI. А знаете, что скрывается под WINAPI? Конечно же __stdcall, что там еще можно использовать? Это же очевидно - назвать синее красным, красное зеленым, а зеленое - синим.
#325 #965609
>>965604
Ты слишком маленький, не поймёшь. Но дам подсказку - те значения дефайнов, которые тебе показывает IDE, это значения которые были вычислены по твоему компилятору, его версии, версии ОС, наличию разных библиотек и т.д. На самом деле там большие деревья условий (IFDEF, IFNDEF), которые определяют именно тот набор дефайнов, которые ты сейчас видишь. А typedef для большей ясности, так ещё с Си повелось
#326 #965610
>>965604
Где ты в винапи С++ нашел?
#327 #965611
>>965604
Потому что в 1970-ых годах Ричи придумал язык С. В нем был препроцессор. За 40 лет ничего лучше С для системного программирования не придумали. На С же и написали WINAPI.

А с++ тут только при том, что он частично обратно совместим с С и из него можно вызывать сишный код.
#328 #965613
>>965604
Это не С++, это API винды на чистом си.

>программировать под ШИНДОСВ


>удивляться, откуда за щекой член

sage #329 #965622
>>965604
Иди батхёрть в свой двор, заебал.
#330 #965641
>>965487
Еще одна илита в треде. Я так и представляю прыщавого толстого подростка, который зашел в класс, его все проигнорили, он решил хоть как-то привлечь к себе внимание, и сказал "Я под линуксом сижу". Жаль, что Ерохины продолжили обсуждать, как они вчера клеили тянок, а бабы еще больше отвернулись от этого недоразумения.
965659965694
sage #331 #965659
>>965641
Вернись в /b/
965663
#332 #965663
>>965659
Можно я останусь? Пожалуйста?
965665
sage #333 #965665
>>965663
Если прекратишь мыслить категориями илиты, Ерохиных, тянок и пр. и перестанешь походить на типичного школьника из /b/, то можешь остаться.
#334 #965690
В STL есть алгоритм для перегнки vector<A> в vector<B> через лямбду конвертирования?
965696965757
#335 #965694
>>965641
Скажи это рарзработчикам компиляторов и компьнити практически всех языков кроме С#
965709
#336 #965696
>>965690
Нашёл std::copy
965757
#337 #965702
Компилятор ругается на подобные строки
ifstream infile( "alice_emma" );
Пишет, что нет конструктора с *char
В то же время в интернете много подобных примеров. Если загнать имя файлы в пременную стринг, а потом
ifstream infile( "alice_emma" );
то это все равно не помогает.
965711
#338 #965709
>>965694
ни один из этих людей не пишет АХАХАХА ВИНДА ХАХА ШИНДОШС БЛЮСКРИН
965718
#339 #965711
>>965702
какой компилятор то? И какая ошибка?
965716
#341 #965717
>>965716
g++ -std=c++11 вместо gcc
965723
#342 #965718
>>965709
Сомнительное утверждение
#343 #965720
>>965716
Замени istream на ifstream.
И подключи заголовочный <fstream>
965726
#344 #965723
>>965717
Это написать в консоль?
https://clbin.com/5C5aLo.png
#345 #965726
>>965720
Подключен, иначе откуда берутся все эти функции указанные компилятором. А вот замена помогла, но только при
g++ -std=c++11
А вот с gcc не хочет
https://clbin.com/WG4MW1.png
965727965744
#346 #965727
>>965726
gcc по умолчанию не линкует стандартную библиотеку C++ да и вообще, это компилятор СИ, а не крестов
965730965731965758
#347 #965730
>>965727
Ой, это я по привычке видимо
как неудобно получилось, интересно почему у меня столько кода другого работало
А чем там линуксогоспода нынче компилируют, а то я чет подзабыл. g++ или как там? g++ -std=c++11 мне не нравится.
965732965733965768
Dmitry #348 #965731
>>965727
Он g++ написал.
Это только он по умолчанию стандартную либу линкует?
#349 #965732
>>965730
Не нравится потому что доп настройки идут, а ни из-за религии, разумеется.
965737
Dmitry #350 #965733
>>965730
g++ / clang++ / i++
965739
#351 #965737
>>965732
тебе абсолютно везде потребуются доп настрйки, как только ты начнешь писать что-то сложнее хелло-ворлдов.
965740
#352 #965739
>>965733
Спасибо, кстати, в некоторых местах читал, что iostream есть в fstream, но видимо меня обманули. Я прав?
965766
#353 #965740
>>965737
У меня сейчас хелоуворлд. но приму во внимание и начну курить такие штуки.
#354 #965743
Двач, подскажи, как создавать gui окна? В смысле не используя какие-либо наборы виджетов и api. Что-то я нагуглить не могу, мне гугл всё чьи-то очередные "самые лучшие" библиотеки подсовывает.
965745965755
#355 #965744
>>965726

>подключен


Ты путаешь istream из <istream> и ifstream из <fstream>. Это разные классы.
#356 #965745
>>965743
Потому что все окна - это API и библиотеки. Используй самые лучшие библеотеки и не выёбывайся.
965747
#357 #965747
>>965745
Они самые хуёвые, то что я хочу реализовать на них не возможно, даже костыли не городятся.
#358 #965750
>>965747
Напиши свой велосипед значит.
965751
#359 #965751
>>965750
Спасибо, уже написал.
#360 #965752
>>965747
Бери голый OpenGL или обётку SFML/SDL
Я как-то делал всякие кнопки и чекбоксы для игры на SFML, это просто но писать очень много кода нужно.
965772
#361 #965753
>>965747
Берешь любую либу, пишешь zaebashit_okno(okno_name); и рисуешь внутри опенглом что хочется.
965772
#362 #965755
>>965743

>Двач, подскажи, как создавать gui окна? В смысле не используя какие-либо наборы виджетов и api.


WinAPI гугли
965759
sage #363 #965757
>>965690
>>965696
Вообще-то std::transform
sage #364 #965758
>>965727

>да и вообще, это компилятор СИ, а не крестов


Вообще это драйвер. Компилятор СИ это cc1
#365 #965759
>>965755
Уже нагуглил и xlib и winapi. Ну всё! Начинается сборка моего кросплатформенного велосипеда!
Dmitry #366 #965766
>>965739
Открываешь файл и там iostream юзаешь, пишешь, читаешь.
Dmitry #367 #965768
>>965730
g++ -std=cxx1z -march=native -O2 -pipe
965770
sage #368 #965770
>>965768
-Wall -Wextra -Ofast
965775
Dmitry #369 #965772
>>965753
>>965752

>2017


>OpenGL


Ну плес.

>>965747
Бери исходники fltk и переписывай на Wayland Display Server Protocol + Vulkan API.
Хелловорлд будет меньше 4 кб, а сама либа работает быстро.
965777
Dmitry #370 #965775
>>965770

>-Ofast


Это уже блоат и некоректные вычисления могут быть.
Самая мякотка -O1 ультимейт решение без трейдоффа, но производительность может быть ниже чем -O2
965786
#371 #965777
>>965772

>2017


>OpenGL


До сих пор нет аналогов.
965787
sage #372 #965786
>>965775
Есть смысл в -match=native без -Ofast?
965788
#373 #965787
>>965777
Vulkan API.
Полностью вытеснил опенгл, работает быстрее.
#374 #965788
>>965786
Есть, -march=native говорит делать ассемблерный код полностью под данный процессор, со всеми SSE, AVX2 и так далее.
965790
#375 #965789
>>965787
Но зато кол-во строк для вывода одного треугольника возросло в 5 раз.
Да и видеокарты почти не поддерживают. Нафиг делать программу, которая запустится у 2% целевой аудитории? Программа должна запускаться как можно больше где.
965793
sage #376 #965790
>>965788
Я о том, что без -Ofast не будет автовекторизации (для fp-чисел), а в чём там перемалывать числа без векторизации — в XMM или в YMM — какая к чёрту разница?
965794
#377 #965791
>>965787

> Полностью вытеснил опенгл


Проиграл с этого школьника, что-нибудь кроме дотки и тестовой игры его поддерживает? Кто-нибудт спешит на нём разрабатывать игры? На сколько производительность лучше? На 10%? 1000 строк чтобы нарисовать квадрат? Vulkan это не нужная параша.
965795
#378 #965792
>>965787
Разве что в твоём манямирке.
Dmitry #379 #965793
>>965789

>в 5 раз


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

>Как можно больше где


Для этого его и сделали, теперь не надо пердолиься с версиями OpenGL, OpenGLES, теперь у нас единое API которое работает на всех платформах.
API поддерживается даже на древних встройках интела, не знаю о чем ты там говоришь.
965821966440
#380 #965794
>>965790
Ofast это не только автовекторизация, и кстати а разве она в O2 не включена?
Там еще несколько сложных алгоритмов оптимизации кода, которые могут сделать код большим и медленным, поэтому надо отдельной опцией указать быстрые вычисления -ffast-math если не ошибаюсь.
965796
#381 #965795
>>965791
На нем квейк переписали, на вулкан уже разработаны движки и портируются существующие, так что вылезай из манямирка.
965798
sage #382 #965796
>>965794

> Ofast это не только автовекторизация, и кстати а разве она в O2 не включена?


Для векторизации fp обычно нужна ассоциативность, которая без -ffast-math не предполагается.
965799
#383 #965798
>>965795
13 игр, проиграл
https://en.wikipedia.org/wiki/List_of_games_with_Vulkan_support
Достаточно того что нужно написать 1000 строк кода для того чтобы нарисовать квадрат, это уже делает его не нужной парашей.
965803965811
sage Dmitry #384 #965799
>>965796
А еще надо знать что в твоем коде есть что векторизировать.
965802
sage #385 #965802
>>965799
Спасибо, Капитан К.О.
Dmitry #386 #965803
>>965798
Работать не хочешь, ну и хорошо. Рыночек таких быстро порешает.
965809
#387 #965809
>>965803

> Работать не хочешь


Если бы ты знал как сложно делать игры на чистом API, то ты бы не пиздел такой хуйни. И на OpenGL делать игры это достаточно серьёзный жизненный шаг, а что там на Vulkan будет я и не представляю.
965825
#388 #965811
>>965798
Заметь что почти все они на разных движках. Тоесть разработка игры на вулкане уже не отличается от разработки на опенгл, это пока что только игр относится, в скором будующем и все графические либы на него перекатят.
965814
#389 #965814
>>965811

> 50 строк кода на OpenGL


> 1000 строк кода на Vulkan


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


Проиграл
965826
#390 #965821
>>965793

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


Ты точно про core профиль?

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


А у меня почему-то другая инфа, всегда думал, что он поддерживается только на самых свежих картах, и то если поставить дополнительные дрова для вулкана.
965827
#391 #965825
>>965809
На вулкане не игры делаются а либы, а на либах движки.
#392 #965826
>>965814
Ты путаешь разработку игры и движка, мань.
#393 #965827
>>965821
Точно.

>у меня другая инфа


Ну под свежее усерднее дрова пишут, всегда так.
#394 #965833
https://paste.ee/p/iYdFS

Блядь блядь блядь блядь блядь блядь блядь, почему нельзя выбрать перегруженный метод без мазохизма?
965835
#395 #965835
>>965833
Но зачем:? Ты занимаешься какой-то бесполезной дрочкой.
965879
#396 #965837
Как std::initializer_list и std::function передаются как параметры? Есть смысл принимать ссылку на них или by-value норм?
965840965895
sage #397 #965840
>>965837
by value
#398 #965850
Есть у меня 3 процесса. Я точно не знаю какие я буду запускать(через CreateProcess), но должен выполнять(закрывать?) их параллельно. Могу ли я использовать WaitForMultipleObjects и передавать туда хэндл по два процесса даже если и не запускал их? что будет от этого? Если допустим для первого процесса я пишу "жди второго и третьего" а второй я даже не запускал. Хендл второго будет передавть мол "завершен" и первый будет ожидать только третьего?
Или я не правильно понял принцип работы WaitForMultipleObjects ? Объясните, пожалуйста.
965851965855966130
sage #399 #965851
>>965850
Это не WinAPI-тред.
965853
#400 #965853
>>965851
зато это тред того где я эти винапи юзаю.
965854
sage #401 #965854
>>965853
Совсем дебил?
#402 #965855
965858
sage #403 #965858
>>965855
Даун.
#404 #965879
>>965835

У QProcess два сигнала finished, один из которых не упомянут в документации.
#405 #965895
>>965837
Передавать по ссылке и юзать семантику переноса, std::move(list), чтобы ресурсы на куче не копировались.
965896966074
#406 #965896
>>965895

>по ссылке


По значению, конечно, объебался.
#407 #966052
Двач, можешь подсказать как можно реализовать offline desktop текстовый редактор который бы поддерживал html, css и javascript?
966059
#408 #966059
>>966052
Аналоги есть или это просто хотелка такая?
966061
#409 #966061
>>966059
Хотелка.
sage #410 #966074
>>965895
Это ты std::move предлагаешь к std::initializer_list применять?! Разупорись.
#411 #966084
Не могу придумать, как без говнокода загружать в память и сохранять из памяти дерево. Не бинарное, количество потомков и уровней неизвестно, у некоторых концевых вершин есть доп. массив с информацией.
966134
#412 #966086
Ребят, в С++ начинающий
Какой компилятор посоветуете?
ибо я так тред почитал и понял, что многие - шлак
О
И заодно литературу какую почитать было бы неплохо
966091966119
#413 #966091
>>966086
Там сверху шапка есть. Что значит компилятор - шлак?
966093
#414 #966093
>>966091
да хуй знает
что-то не поддерживает
я не особо вникал не бейте меня
966101
#415 #966101
>>966093
Как тебя не бить, когда ты несешь какую-то отбитую чушь, и потом говоришь - ОЙ Я НЕ ЧИТАЛ ОБЬЯСНИТЕ МНЕ. Иди блядь и читай.
966104
#416 #966104
>>966101
бля, соррян
чуток неадекват
нашёл
#417 #966118
Неофит на связи. Почему в C и C++ так любят объявлять сигнатуры функций в одном файле (.h), а определяют их в другом файле (.cpp) или в том же файле чуть позже? И с классами та же тема, сигнатуры хуячите в описании класса, а определяете вообще хз где:
ClassName::FuncName()

Почему нельзя сразу определять тело функций? Какой профит с описания лишь сигнатур? Типа чтобы точки входа в функцию рядом располагались, и по ним можно было бы прыгать по указателю?
966120966123966436
sage #418 #966119
>>966086
vim — лутший конпелятор.
#419 #966120
>>966118
Почитай как работает препроцессор и как происходит линковка
#420 #966123
>>966118
Чтобы ты не лез куда попало. Видишь интерфейс - им и пользуйся.
Ну и, естественно, ускорение времени компиляции, потому что разным юнитам трансляции придется делать одно и то же, если все подряд хуячить в хэдере.
Алсо, платформенно-зависимые куски приходится дефайнить (хотя это один из самых хуевых вариантов написания кросс-платформенной библиотеки), и тогда у тебя будет все засрано, как в WINAPI (ох уж эти уебанские описания COM интерфейсов и перехватчиков, фу блять, как вспомню только)
966124966129
sage #421 #966124
>>966123

>дефайнить ... это один из самых хуевых вариантов написания кросс-платформенной библиотеки



Ты хотела написать "дефайнить — это единственный существующий метод написания кросс-платформенной библиотеки", Манюня.
966127
#422 #966127
>>966124
Таки нет. Почитай про wrapper facade, им заворачивают платформенно-зависимый код. Зацепив к одному заголовочнику , например, несколько вариантов исходников (которые выбираются во время сборки) можно избавиться от этого говна. Ну и про PIMPL не забывай, это, конечно же , лишний оверхед, но для кросс платформенности нормально.
966132
#423 #966129
>>966123
А если функции в хедере void или возвращают указатели, можно инклудить все зависимости в cpp, а хедер будет чистый и не потянет зависимости выше по иерархии инклудов
#424 #966130
>>965850
МСДН тебе тут штоле?
sage #425 #966132
>>966127

>которые выбираются во время сборки


Святым духом выбираются?
966135
#426 #966134
>>966084

Всё как обычно: определяешь operator<< и operator>> для каждого типа.
966239
#427 #966135
>>966132
Системой сборки блять. Что ты за человек то. Это гораздо лучше, чем городить блядские дефайны где ни попадь, а к слову, я даже знаю одного человека, которые дефайнил целые функции, потому что считал, что так быстрее будет.
966136
sage #428 #966136
>>966135

>Системой сборки блять. Что ты за человек то.


Которая написана на C(++) и где были использованы эти кроссплатформенные дефайны.
Ну или платформа определяется запуском препроцессора над файлом с ifdef-ами и проверкой, какие куски этого файла выжили.
966137966142
sage #429 #966137
>>966136

>кроссплатформенные дефайны.


*дефайны для определения платформы
#430 #966142
>>966136
Конфиг конфигом, я тебе про платформенно-зависимый код говорю. Тот д же мьютекс под разными осями будет иметь в итоге один общий интерфейс, в то время как логика создания/захвата и т.д. может различаться. Проще и чище вынести код для каждой платформы в отдельный сорец и там пилить логику, но уже без дефайнов, чем ковыряться в куче говна. Об этом речь. А система сборки для того и нужна, чтобы этот мусор разгрести.
966160
sage #431 #966160
>>966142

>Конфиг конфигом, я тебе про платформенно-зависимый код говорю.


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

Объясняю ещё раз. В твоей системе сборки ты проверяешь текущую платформу каким-нибудь так
if($platform==OSX)
srcs+=(mutex/impl/osx.cpp);
endif
(это псевдокодкод условной системы сборки).

Только вот значение $platform:
1) Определяется при сборке этой системы сборки с помощью тех же дефайнов.
2) Определяется при запуске системы сборки выполнением каких-нибудь скриптов, которые вызывают препроцессор и опять же смотрят, какие переменные в нём предопределены.
966464
47 Кб, 510x381
#432 #966202
Что может пойти не так?
966217966221
sage #433 #966217
>>966202
Не совсем понятно зачем наследоваться. Можно же
template<class PtrT>
using Ptr = std::shared_ptr<PtrT>;
966220966236
sage #434 #966220
>>966217
typename после = наверное ещё добавить надо
966222
#435 #966221
>>966202
Быть может я и не прав, но вроде как локальные объекты move не возвращают
кто-нить знающий, поясните, прав я или нет
966225
sage #436 #966222
>>966220
или нет
sage #437 #966225
>>966221
О, этого я не заметил. Да, это dangling reference.
966228
#438 #966228
>>966225
Отлично, значит я хоть что-то знаю
#439 #966236
>>966217
А оператор куда писать?
966238
sage #440 #966238
>>966236
А зачем?
966243
#441 #966239
>>966134
А алгоритм сохранения дера то какой?
966240966338
sage #442 #966240
>>966239
Какой тебе будет удобнее.
966261
#443 #966243
>>966238
Так можно писать
Ptr<A> = Ptr<B>(new B)
вместо
shared_ptr<A> = dynamic_pointer_cast<A>(shared_ptr<B>(new B))
#444 #966261
>>966240
Это троллинг? Мой вопрос и заключался в том, как сохранить дерево, при помощи какого алгоритма. Синтаксические вопросы дело последние.
966280
#445 #966280
>>966261

>при помощи какого алгоритма.


Это троллинг?
При помощи алгоритма обхода дерева.
966283
#446 #966283
>>966280
Вот есть дерево. Я его рекурсивно обхожу. Что дальше? Что я должен записать в файл?
966327966425
#447 #966327
>>966283
https://ideone.com/yOfNd3
Пиздец как хуёво у крестовиков всё
мимо дотнетчик
#448 #966330
Changes between C++14 and C++17 DIS
https://isocpp.org/files/papers/p0636r0.html
966351966365
#449 #966338
>>966239

Для маленьких деревьев: рекурсивный, блядь.

Для больших деревьев: обход дерева с поворотом ссылок в обратную сторону.
966341
#450 #966341
>>966338
Как это в файл записать так, чтобы потом востановить?
966387
#451 #966351
>>966330
Зачем ++ у bool убрали?
А -- остался?
966356966441966442
#452 #966356
#453 #966365
>>966330
Декларацию function() throw(X) убрали?
Помню как-то написал throw(A, B), и спустя время где-то внутри дочерних вызовов внутри этой функции выкидывалось С, и это исключение невозможно было поймать, как будто его кидает main. Долго пытался понять что происходит вообще.
Эта хрень требует указывать абсолютно все исключения которые могут возникнуть, поэтому убрали видимо.
#454 #966387
>>966341

Мозг себе сейчас сломаю тем, чтобы хоть как-то тебе помочь, но так, чтобы ты ещё и сам подумал головой.

https://paste.ee/p/SWHj8

operator>> напиши сам.
#455 #966404
Кроме того, твой опциональный массив должен быть частью payload - само дерево в идеале должно содержать только payload и быть template-ом, чтобы ты мог использовать его c другими классами без изменения.
#456 #966406
Привет, крестовики. Я тут задумался недавно, а зачем вообще C++ и почему не пишут все на C.
То есть приведите примеры где C++ необходим.
#457 #966410
>>966406
Примеры где с++ необходим — абсолютно все случаи, кроме написания драйверов.
#458 #966415
>>966406

>То есть приведите примеры где C++ необходим.



Таких примеров нет, оба языка Тьюринг-полные.

Просто на C++ ты напишешь код короче и безопаснее, и сделаешь это быстрее.
#459 #966416
>>966406
Блять, что за такая тупорылая постановка вопроса "где необходим"?
#460 #966422
Неофит с очередным вопросом. Стоит ли использовать константы по поводу и без? Есть ли ощутимая разница в производительности, есть ли разница в скорости компиляции? А то пока что единственная причина, по которой стоит использовать const - чтобы "не забыть, что переменную нельзя изменять", что мне кажется как то надуманно и не особо важно, но в то же время по const'ам аж главы в книгах пишут.
966430
#461 #966424
>>966406
Привет, крестовики. Я тут задумался недавно, а зачем вообще C++ и почему не пишут все на haskell.
То есть приведите примеры где C++ необходим.
#462 #966425
>>966283

>Вот есть дерево. Я его рекурсивно обхожу. Что дальше? Что я должен записать в файл?


Последовательно обхода, наркоман.
Ты, прежде чем такие вопросы задавать, указывай возраст, мол студент первого курса. Итд.
И пробуй хоть гуглом воспользоваться.
966762
#463 #966426
>>965604
Это пример прекрасного и мощного кода. Такого кода больше нет, одно хипстерство и пидорство. Его можно сравнить с огромным, брутальным промышленным комплексом. А WinAPI, кстати - лучшая в мире библиотека для каких-либо языков программирования. Ибо она умеет всё.
#464 #966428
>>966406
Свой динамический массив и строку уже написал?
966467966558
#465 #966430
>>966422

> что мне кажется как то надуманно и не особо важно


> но в то же время по const'ам аж главы в книгах пишут


Так может потому они и важны раз пишут целые главы?
966431
#466 #966431
>>966430
В том то и дело, я хочу узнать, не скрывается ли за const что нибудь еще, кроме как помощь не забыть и не проебать значение переменной.
966432
#467 #966432
>>966431
Почитай, например, про константные функции классов.
#468 #966434
>>965787
Скажи мне, друг, а ты проводил тесты? Сравнивал производительность одной и той же программы, написанной с использованием OpenGL и с использованием Vulkan?

Или ты просто прочитал где-то, что Vulkan - это модно, молодёжно, будут бабы давать, и OpenGL уже не нужен? Знаешь ли ты о синхронизации и о том, как с не бороться? О том, как вручную управлять ресурсами? Сможешь ли ты хотя бы написать на вулкане программу, которая будет по производительности хотя бы такая же, как аналогичная на OpenGL?
966438
#469 #966435
Предлагаю в С++20 вызывать методы указателя через ~, а -> отдать байтоёбам,охуенное же

auto x = new Yoba
x~call()
#470 #966436
>>966118
Чтобы у тебя не возникало каши при желании просмотреть список методов класса, не путаясь в реализациях.
#471 #966437
>>966406
Да хотя бы тот же RAII.
#472 #966438
>>966434
Лучше бы назвали Pukan
#473 #966440
>>965793

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


Чушь собачья.
Нвидия, например, напиздела с поддержкой.
https://devtalk.nvidia.com/default/topic/917161/vulkan/fermi-support-/post/4810640/#4810640
#474 #966441
>>966351

>А -- остался?


Шта?
966447
#475 #966442
>>966351

> -- остался?


Его и не было никогда.
966447
#476 #966447
>>966441
>>966442
А нахуй тогда ++ был, если -- небыло?
966448
#477 #966448
>>966447
The ++ operator for bool was deprecated in the original 1998 C++ standard
966449
#478 #966449
>>966448
Кому вообще пришло в голову инкриментировать bool?
966451966950
179 Кб, 500x613
#479 #966451
>>966449
Декремент ноги.
#480 #966464
>>966160

>> 1) Определяется при сборке этой системы сборки с помощью тех же дефайнов.


Каким хуем ты приплел исходники из кода к парсеру системы сборки?!

>> 2) Определяется при запуске системы сборки выполнением каких-нибудь скриптов, которые вызывают препроцессор и опять же смотрят, какие переменные в нём предопределены.


Это ты так привык, но это не обязательно. Хотя с использованием какого-то конфига так проще всего, потому что и с этим зхэдером, по факту, ты работаешь только вскользь.
#481 #966467
>>966428
Двачую !
#482 #966523
>>966519

>програмирование на с++


>>961839 (OP)
Сюда пиздуй
#483 #966558
>>966428
Погодите, погодите. Это крестовик-затейник сейчас траллет сишника строками? До чего мир докатился, блять.
966586
#484 #966586
>>966558
Посмотрите, долбоёб-сишник считает, что у него в языке отличные строки.

На, почитай, не позорься: http://russian.joelonsoftware.com/Articles/BacktoBasics.html
966657966909
#485 #966653
>>961839 (OP)
У меня есть два байта данных (uint16_t, quint16). Оригинально они задумывались содержать беззнаковое целое. Как можно представить эти данные во float (забросить их в least significant bytes) и signed int? Главное, чтобы результат имел то же бинарное представление, что и оригинальное число.
Это какой-то очередной posanskiy_cast?
966665966672
#486 #966657
>>966586
долбоеб строки это просто байты в памяти, а по твоей ссылке какойто индус несет хуйню
966707
#487 #966665
>>966653
union type punning
966730
#488 #966672
>>966653
memcpy
#489 #966707
>>966657

>Не знать Джоэла


Если бы ты почитал повнимательнее, ты бы понял, что строки - гораздо более сложная вещь, чем просто байты в памяти.
966716
#490 #966710
Накидайте свои крутые assert макросы, больше всего интересуют универсальные __FILE__ и __FUNCTION__ для разных компиляторов
Использовал бы стандартный, но там какая-то еботня с NDEBUG, который надо отслеживать в чужих хедерах
И ещё нельзя написать return assert(x)
966713967128
#491 #966713
>>966710
эээ, __LINE__ ?
#492 #966716
>>966707
что там сложного? длина не указана? городить структуру и хранить со строкой? твой джоэл крудошлеп и раздул проблему на пустом месте
966726
#493 #966726
>>966716

>Да здания - это же просто нагромождения арматурин с цементом, что там может быть сложного?



Когда ты сделаешь структуру и будешь хранить её вместе со строкой (кстати, так делать нельзя, ведь структура - это часть реализации, значит, в хедере ей не место), то у тебя получится тот же самый C++. Только вымученный, со странными названиями функций и без неймспейсов.
966844966938
#494 #966730
>>966665

>union type punning


Сработало. Спасибо, анончик.
memcpy - это очень мощно, но тоже должно работать
966815
#495 #966762
>>966425
Мне хотелось бы обходить его рекурсивно, чтобы уменьшить размер выходного файла. Студент 2 курса. Алсо в гугле только бинарные деревья видел.
966773
Dmitry #496 #966773
>>966762
Рекурсивный код тормозной.
966779
#497 #966779
>>966773
А вот мне плевать на время исполнения, я память на харде хочу экономить.
966780966788
sage #498 #966780
>>966779
Каким образом рекурсивный обход дерева будет уменьшать размер итогового файла?
966789
Dmitry #499 #966788
>>966779
Долбоеб.
Исполняемый файл по дефолту большой, особенно на винде, ты и 40 байт не съэкономишь
966791
#500 #966789
>>966780
При последовательном обходе в выходной файл придется записывать полный путь каждой ветки
Вершина/вершина2уровня1
Вершина/вершина2уровня2/вершина3уровня1
Вершина/вершина2уровня2/вершина3уровня2
А вот при рекурсивном
Вершина(Вершина2уровня1/Вершина2уровня2(ТУТ ЕЩЕ ДВЕ ВЕРШИНЫ МНЕ ЛЕНЬ))
966794966798
#501 #966791
>>966788
Тред не читай, сразу отвечай.
Я теоретик, мне насрать на конкретные цифры, это 1.
Я говорил, про выходной файл, а не исполняемый.
966793
#502 #966793
>>966791

>Я говорил, про выходной файл, а не исполняемый. Это 2.

sage #503 #966794
>>966789
Не понимаю. Можешь на нормальном примере пояснить?
966796
37 Кб, 923x510
#504 #966796
>>966794
Это описание для дерева вида пикрил.
966823
#505 #966798
>>966789

>Вершина/вершина 2ого уровня-1ая


>Вершина/вершина 2-ого уровня2-ая/вершина3-его уровня1-ая


>Вершина/вершина2уровня2/вершина3уровня2

#506 #966815
>>966730
пожалуйста :3
sage #507 #966823
>>966796
Можно и без рекурсии такое построение сделать. Тебе нужен поиск в глубину (я так понимаю, ты его используешь).
Ну так-то я и не знаю, что сказать. Если ты просто будешь выводить во время обхода номера вершин в строку, то получишь практически тоже самое, что хотел. Тут надо только мозг включить и расставить скобок и слешей, где надо.
966827
#508 #966827
>>966823
Ну вот, скобки и слеши. То есть у меня в файле будет каждая вершина упоминаться ровно один раз. Именно о таком алгоритме я и спрашивал. Алсо я придумал его еще до того, как написал сюда, потом решил, что он несработает из-за синтаксиса, а через 20 миут понял, что все ок. Т.е. я около суток морочу всем здесь голову.
966831
sage #509 #966831
>>966827
По теории графов и алгоритмам наверни вводный курс. Будь ты хоть макакой, всё равно пригодится.
966848
#510 #966844
>>966726
а я бы не тащил работу со строками в реализацию языка. в любом случае, джоэл сосет
967055
#511 #966848
>>966831
Я уже прошел и теорию графов(предмет назывался наглядная геометрия и топология) и теорию деревьев (авл, красночерные и прочие кошерные вещи), введение в мат логику и теорию алгоритмов тоже было. Все изученное использую. Меня просто переклинило.
966852
sage #512 #966852
>>966848
Научись тогда гуглить чтоли. И не загоняйся.
#513 #966909
>>966586

>долбоёб-сишник


Мимо, я долбоёб-шарпист
#514 #966912
var i_need = get(&perekat);
966913
#515 #966913
>>966912
Эй, шарпист. Нормальные пацаны юзают auto
#516 #966922
>>961839 (OP)
I need Help, аноны!
Как воспроизвести вот это условие: дважды вычислить значение выражения, используя функции, возвращающие void и не void
На примере этого кода: http://rgho.st/private/6pWf8Nz4L/4f7016b7ba8c1a06444ae6ff71440156
Пытался вкурить за сам void - нихуя
#517 #966938
>>966726

>кстати, так делать нельзя, ведь структура - это часть реализации, значит, в хедере ей не место


Твои обезьяньи java-привычки тут не работают, макакич.
967055967194
#518 #966950
>>966449

>Кому вообще пришло в голову инкриментировать bool?


На реддите чел плакался, что ему придется кучу кода пидорасить из-за этого. Из рахи, судя по нику.
#519 #967023
Есть ли способ подсчёта вхождений подстроки в строку быстрее чем тот, который везде дают в качестве стандартного?

size_t count = 0, l = sub.length();
for (size_t offset = str.find(sub); offset != std::string::npos; offset = str.find(sub, offset + l))
{
++count;
}
967119967334967335
#520 #967042
>>961839 (OP)
>>961839 (OP)
>>961839 (OP)

Добавляйте слово "кресты" в шапку, иначе искать неудобно.
967067
#521 #967055
>>966938
Джава - абсолютнейшее говно с точки зрения отделения интерфейса от реализации. Вся документация обычно в исходниках - если нужна инфа, нужно вручную читать исходники. Функции объявляются и на месте реализовываются, в итоге исходный код превращается в кашу.

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

>>966844
А этого и нет в реализации языка. Плюсовый std::string - лишь часть стандартной библиотеки, ты волен не использовать его. Можешь взять любой васянский типа CString или QString и даже написать свою версию.

А из статьи ты так ничего и не понял.
967113
#522 #967059
Почему

template<typename T>
void yoba(vector<T> xx)

не принимает initializer_list?
Если добавить функцию

template<typename T>
void yoba(initializer_list<T> xx) {
yoba(vector<T>(xx);
}

то работает
967179967470
#523 #967067
>>967042
ищи по cppthread
#524 #967069
Прогромач помогач, не знаю как гуглить некоторые вопросы, а есди и знаю, то поисковая выдача не радует.
Вот есть у меня структура. Я вызываю функцию и хочу чтобы эта функция возращала ссылку на такую структуру, зосданную внутри этой функции, причем чтобы этот объект потом не исчезал.
Сейчас компилятор не ругается на такой код[code]
structure Al
{int cogolikl;};
Al Yoba(int n)
{
Al
Cus = new Al;
(Cus).n = 1499;
return
Cus
}
[/code]
Значение полученное функцией использую как ссылку.
Можно это сделать как-нибудь красивее и приятнее?
967070
#525 #967070
>>967069
Ошибочка, на

>return *Cus


он ругается
Сейчас перепишу в пасбин.
967071
#526 #967071
>>967070
pastebin.com/ULLCHncU
967073
#527 #967073
>>967071
У тебя будет висячая ссылка.
Лучше возвращай unique_ptr
967074967186
#528 #967074
>>967073
Почему указатель то висячий? Я же через нью создавал. И не хотелось бы для такой простой штуки прибегать к стль.
967075
#529 #967075
>>967074
Ты из функции возвращаешь не адрес переменной (указатель), а сам объект.
967078967186
#530 #967078
>>967075
То есть если я верну Cus, то это все исправит?
967079
#531 #967079
>>967078
Да и потом ты его должен сам удалить.
967081
#532 #967081
>>967079
Да, про делит помню
#533 #967082
http://ideone.com/YcuLtv
Это что, нужно писать специализации для каждого возможного char[N]? Почему вторая функция не ловит строку?
967086967117967141
#534 #967086
>>967082
А если сделать так http://ideone.com/mG3GnY то уже std::string не ловит...
92 Кб, 1295x736
106 Кб, 1232x739
62 Кб, 609x710
#535 #967092
Чёт я совсем запутался. Нужен только цпп и директИКС.

Всё правильно натыкал?
967093
#536 #967093
>>967092
А нахуй тебе директикс?
967094
#537 #967094
>>967093
писать читы

чисто спортивный интерес не школьник
967097
#538 #967097
>>967094
Ладно, тогда хорошо.

У тебя ОС семёрка, судя по всему? Я просто насчёт SDK не уверен. Пакет для графических инструментов 8.1 - это немного не то. У меня на десятке стоит Windows 10 SDK (10.0.10586.0). А вот для Win7 я пункта что-то не вижу.

Да, если что, отладчик графики и профилировщик GPU в Windows 7 работать полноценно не будет. Он ещё в VS2013 не работал нормально на семёрке.

И да, отметь MSBuild.
967099
#539 #967098
Как можно сжать и расжать std::string через zlib/bz2/lzma? А то как не посмотришь на примеры, там тыща каких-то стримов-хуимов, буферов-хуюферов начзначать надо. Хочу как в питоне
s = b"asdfg"
compressed = bz2.compress(s)
#540 #967099
>>967097
Да, семёрка. Уже в тренде были вопросы по поводу СДК для 8.1 - вроде говорили, что для 7ки подходит.

Я тогда и 8.1 SDK тоже пну
967100
#541 #967100
>>967099
Графические инструменты убери, они не нужны. Все либы есть в обычном SDK.
#542 #967113
>>967055

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


Да-да, java-дебил, при реализации строк нужно обязательно применить pimpl-idiom, а строки создавать только фабрикой.
967136967194
#543 #967117
>>967082
Там с автоматическим выводом параметра шаблона что-то не то. В обоих твоих случаях помогает явное указание, типа test<const char *>("test");
#544 #967119
>>967023
Есть. Гугли.
967317
#545 #967121
Если конструктор копирования вызывается миллиард раз, нормально пометить его inline и написать в хедере рядом с классом? Почему так никто не делает?
967129967132967141
#546 #967128
>>966710
__FUNCTION__ вроде не все компиляторы поддерживают, в отличие от __LINE__, __FILE__
Никакой еботни с ndebug нет, просто он отключает ассерты. Если наоборот хочешь включить то просто пишешь #ifndef nbebug #undef ndebug #endif
Алсо, мне нравится такой ассерт:
#define asserted ? (void*)0 : fprintf(stderr, "Assertation failed.")

x != NULL asserted;
#547 #967129
>>967121
Ну и каков профит на примере?
967143
#548 #967132
>>967121
потому-что слово inline ничего не меняет, кроме разрешения ODR.
967143
#549 #967136
>>967113
Дегенерат-студент вспомнил термины из лекций полугодовалой давности и решил, что это то, о чём я говорю. Ну ладно, со временем ты поймёшь, что значит не показывать пользователю то, что ему не нужно.
967141
#550 #967141
>>967082

>Это что, нужно писать специализации для каждого возможного char[N]?


Нет. http://ideone.com/Plv64x
>>967121

> Почему так никто не делает?


Так все делают.
>>967136

> ба-бах


Держи банан.
967160
#551 #967143
>>967129
Если конструктор присваивает пару указателей и не исполняет кода, неплохо бы его инлайнить чтобы копирование объектов было похоже на инициализацию структуры, без вызова функции конструктора
>>967132
Ни разу не видел чтобы конструкторы писали в хедере
967144
#552 #967144
>>967143

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


Дивись, хлопець https://github.com/llvm-mirror/libcxx/blob/607e0c71ec4f7fd377ad3f6c47b08dbe89f66eaa/include/vector#L1063
#553 #967160
>>967141
Знаешь, это твоё дело. Если ты не умеешь делать то, что ты пишешь, опрятным и юзабельным, то это целиком твои проблемы. Просто когда у тебя возникнет вопрос, а почему это никто не хочет пользоваться тем, что ты создал, вспомни мои слова.
#554 #967165
Как в C++ использовать скрипты на Lua? Погуглил, все советуют разное, кто-то LuaBridge, кто-то swig. Что все-таки лучше использовать?
967172967173
#555 #967172
>>967165
Я бы взял то, что тащит не особо много кода за собой, уже написан какой-то функционал для работы инициализация и всё такое, есть документация/туторы.
#556 #967173
>>967165
Есть же официальный интерпретатор луа, написанный на Сях. Не подойдет?
967182
#557 #967179
>>967059

Сам спросил - сам ответил. Чтобы работал initializer_list, должен быть известен тип initialiser_list. Конструкторов может быть несколько. То есть, разумеется, можно добавить в стандарт исключение для объектов с одним определённым конструктором, но это противоречит идеологии продажи оружия для уничтожения ноги.
967456
#558 #967182
>>967173
Может и подойдет, я не знаю, поэтому и спрашиваю.
У меня есть класс, у каждого экземпляра должен быть свой скрипт на Lua. Есть события, которые вызывают определенные методы. Эти методы должны вызывать соответствующие колбэки в Lua. И наоборот, вызов определенных функций в Lua, должен вызывать методы в классе.
Мне нужно то, что позволит это сделать проще всего.
#559 #967186
>>967073

>У тебя будет висячая ссылка.



У него не ссылка, а указатель.

>>967075

У него опечатка: тип возврата - указатель, а возвращает он объект. Очевидно, что нужно звёздочку из ретурна убрать.
#560 #967194
>>966938
>>967113

Интерфейс должен быть отделён от реализации, и технология 80ых годов не даёт сделать это в С/C++ без пимпл. Deal with it, модули уже в пути.
967201967364
#561 #967201
>>967194

>модули уже в пути.


Которые просто precompiled headers, ага.
968141
#562 #967238
Если у меня есть string A, а мне нужно разделить ее на две строки, которые в изходной строке разделяются каким-нибудь символом, например тильдой, то как мне это сделать? Видел очень много примеров типа
string B = strtok(A, "~");
или
string B = strtok(A.c_str(), "~");
но во-первых мой g++ отказывается такое есть из-за проблемы с конст чар, а во-вторых видел мнение, что это сишный код, а мы пишем на плюсах, поэтому стоит избегать такого.
967267
#563 #967267
>>967238
Методы find() и substr() класса std::string в помощь.
#564 #967317
>>967119

>Гугли


А как ты думаешь, как я нашёл именно этот способ и почему спрашиваю, нет ли ещё? Может потому что везде этот способ предлагают.
Суффиксные массивы/деревья не в счёт, заебёшься с их быстрой реализацией.
#565 #967334
>>967023

>Есть ли способ подсчёта вхождений подстроки в строку быстрее чем тот, который везде дают в качестве стандартного?



Это зависит от того, какой алгоритм испльзован в std::string::find. Самый быстрый - Кнутта-Морриса-Пратта, ЕМНИП.
967382
#566 #967335
>>967023

Олсо, std::find неоптимален для пересекающихся вхождений: в тех случаях, в которых КМП-поиск пропускает символы, std::find этого не сделает, так как ты вызываешь его много раз, а не один.
967337
#567 #967337
>>967335

Точнее: неоптимален для самонепересекающегося запроса.

Пример: строка 123412341234
Запрос: строка 1234

КМП-поиск сравнит каждый символ 1 раз, а тот алгоритм, который ты нашёл, сравнит все символы кроме "1" два раза.

Препроцессинг КМП-поиска можно приколхозить к std::string::find и будет тот же КМП-поиск.
#568 #967364
>>967194
Ну почему не даёт. Во-первых, можно хранить внутренние функции в .c, а не в .h. Во-вторых, в случае со строкой можно делать так: вместо char использовать void, в первых байтах хранить информацию-заголовок, а в оставшихся - данные. Для обработки написать кучу разных функций, знающих, как работать с таким форматом. Что, собственно, и делается в C++, только без костылей.

Вообще, языку Си не хватает только strong typedefs и неймспейсов для безопасности.
967366967372
#569 #967366
>>967364

>PCHAR и PVOID


Фикс. Чёртова макаба.
#570 #967372
>>967364

>Во-первых, можно хранить внутренние функции в .c, а не в .h.



Это крестотред. Декларации всех методов должны быть в заголовке - фиг бы с ними, с функциями.

Не могу понять, почему нужен pvoid для строки. Что мешает затайпдефить структуру? Чем структура отличается от указателя? Ведь и то, и другое - метаинформация.
967377
#571 #967377
>>967372
Это было к вопросу о том, как нормально реализовать строку в С, т.к. pchar - слишком медленный вариант (читай Джоэла выше).

Проблема структуры "указатель - длина" в том, что длину строки, по-хорошему, нельзя оставлять открытой для изменения. Это небезопасно, это путает пользователя и это вызывает вопросы вида "А что будет, если я сделаю strStruct.size = 100500; CopyStr(strStruct, strStruct2);?". Более того, некоторые так и будут делать.

Задокументировать всё, конечно, можно, но гораздо лучше, если таких вопросов не будет возникать in the first place.
967380967398967467
#572 #967380
>>967377
А, и ещё. Положив size открытым полем в структуру, ты больше не сможешь переименовать его или сильно изменить. Потому что тогда у пользователей всё сломается. А спрятав реализацию, ты спокойно можешь менять там что угодно, главное, чтобы открытый API сохранял свою работоспособность.
967467
#573 #967382
>>967334
Спасибо за подсказку. Только я ннп, как я должен находить "разделитель, который не должен нигде более встречаться", он же "любой символ, не входящий в алфавит".
967400
#574 #967398
>>967377

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



Приватный size, публичный геттер. Но в сях с этим хуже, да.

>"А что будет, если я сделаю strStruct.size = 100500; CopyStr(strStruct, strStruct2);?". Более того, некоторые так и будут делать.



Эти ошибки можно делать и без этого. Не надо беспокоиться о безопасности, которой нет.

>ты больше не сможешь переименовать его


>или сильно изменить



Зачем? Почему нельзя в объявлении класса оставить только сигнатуру? Зачем мне вообще менять метод size() для элементарной структуры? Каким образом изменение метода вычисления size может сломать программу?
967447
#575 #967400
>>967382

Это нужно только для того, чтобы остановить поиск. string.find останавливает поиск сама с учётом сохранённой длины строки, и в своём цикле ты не должен пытаться заскочить за конец строки. Во всех учебниках написан алгоритм для строки неизвестной длины.
967422
#576 #967422
>>967400
Запилил. Получается гораздо медленнее чем встроенным.
967434967436
#577 #967427
>>964526
Reverse Engineering for Beginners
Dennis Yurichev
967462
#578 #967434
>>967422
На строках длиной в 10 символов скорее всего будет медленнее.
967461
#579 #967436
https://github.com/gcc-mirror/gcc/blob/9d0507742960aa9f2b99bc6e9584655ecc611792/libstdc++-v3/include/bits/stl_algobase.h

Какого ляда нету lower_bound с выбором компаратора? По стандарту должно быть, где оно? Точнее, почему оно с двумя подчёркиваниями?

>>967422

Нужно больше инлайнов, лол.

Попробуй запилить весь поиск без использований std::string::find(). Я не советчик, впрочем: просто сказал про КМП.
967439967461967530
#581 #967447
>>967398
Я о сях говорил, у крестов таких проблем нет.

>Зачем? Почему нельзя в объявлении класса оставить только сигнатуру? Зачем мне вообще менять метод size() для элементарной структуры?


Опять же, в сях не может быть метода size(). Может быть только функция GetSize(MyString* str) или публичный, открытый для всех член структуры. От последнего варианта нужно бежать как от огня.

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


Если это плюсовый метод, то, опять же, никак. Если это публичный член структуры в Си, то вот тебе сценарий:

Изначально хранилась пара "Указатель - длина". Для нужд других функций её поменяли на "Указатель на начало - указатель на конец". Всё, поля size у структуры больше нет. У пользователей всё поломалось.

Поэтому хранить сложные объекты в чистом Си в виде структур абсолютно некорректно. Поэтому и вариант с pvoid - единственный нормальный.
967530
#582 #967456
>>967179
Ну вообще мне 4 функции пришлось добавить, поэтому спросил
#583 #967461
>>967434
Искомая строчка в пределах 20 символов. Строка в которой ведётся поиск - десятки кб.

>>967436

>Нужно больше инлайнов


Сложна, сложна

>без использований std::string::find()


Ну так я и попробовал через КМП. Вышло слишком медленно.
970152
#584 #967462
>>967427

>Reverse Engineering for Beginners


>Dennis Yurichev


Душевное спасибо. Именно оно
#585 #967467
>>967377

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


>>967380

>А, и ещё. Положив size открытым полем в структуру, ты больше не сможешь переименовать его или сильно изменить.



Java-макака перечитала букварей по о-о-пе а-ля Бради Гуч и теперь с умным видом поучает всех банальностям.
#586 #967470
>>967059

>Почему


>


>template<typename T>


>void yoba(vector<T> xx)


>


>не принимает initializer_list?



Потому что шаблон vector<T> не может заматчить initializer_list<T>.

Если ты думал, что тут выстрелит конструктор вектора, принимающий initializer_list и произойдёт implicit conversion, то ты жестоко ошибался. Это происходит при overload resolution, который происходит в более поздней фазе компиляции, чем инстанциация темплейтов.
#587 #967487
Братия, вопросы.
а) Имею (упрощенно):
static struct {
Trigger trigger;
} ctrls[] = {
{
Trigger(HOLD_CYCLES, CRIT_TEMPERATURE_C),
},
{
Trigger(HOLD_CYCLES, CRIT_TEMPERATURE_C)
}};
По стандарту, должны вызываться копи-конструкторы, с помощью которых экземпляры триггеров попадут в массив? А исходные объекты создаются где, в стеке? Все сразу первым делом, и потом копируются, или создался-скопировался каждый по очереди? Мне важно, потому что стек ппц маленький. И еще любопытно: вот эти временные объекты - они rvalue? Для них будет вызыван move-конструктор вместо copy, или нет и не будет?
2) Дальше по тексту будет что-то вроде
for (auto &ctrl : ctrls) {}. В данном случае будет ли какая-нибудь разница между for (auto &&ctrl : ctrls) и for (auto &ctrl : ctrls)? Если здесь не будет, то где будет? Не предлагайте писать for (const auto &ctrl : ctrls), у меня там вызывается фкункция, изменяющая состояние объекта.
967488967502967509
#588 #967488
>>967487
Хм, накосячил что-то внезапно. Должно быть
static struct {
Trigger trigger;
} ctrls[] = {
#589 #967502
>>967487
Ну напиши что-нибудь простое и проверь, как это на самом деле работает. У меня не вызывался конструктор копирования. Возможно, что я не так задачу понял или не шарю.
http://ideone.com/KDH1h2

>разница между for (auto &&ctrl : ctrls) и for (auto &ctrl : ctrls)


Ну для rvalue ссылок будет конструктор перемещения использоваться, так что я бы не стал этим баловаться в цикле.
967505967509967520
#590 #967505
>>967502

>Ну для rvalue ссылок будет конструктор перемещения использоваться


В смысле, можно закорраптить элементы в структуре данных.
967509
#591 #967509
>>967487
>>967502
>>967505
Бля, ну ты понел. Не научился ещё объяснять.
67 Кб, 562x434
#592 #967520
>>967502

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

967529
#593 #967529
>>967520
Действительно, херню сморозил.
(auto &&ctrl : ctrls) == (Trigger &ctrl : ctrls)

Судя по комментариям из кода отсюда:
http://en.cppreference.com/w/cpp/language/range-for
967546
#594 #967530
Новый вопрос: как мне из отрицательного float, 0.0f и положительного float сделать -чото, 0 и +чото соответственно?

Для интов это элементарно: return b-a. А для флоатов?

>>967447

>Если это плюсовый метод, то, опять же, никак. Если это публичный член структуры в Си, то вот тебе сценарий:



В C безопасности нет, зачем эта осторожность? Разве что для успеха ловли багов.

>Изначально хранилась пара "Указатель - длина". Для нужд других функций её поменяли на "Указатель на начало - указатель на конец". Всё, поля size у структуры больше нет. У пользователей всё поломалось.



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

>>967436

>Какого ляда нету lower_bound с выбором компаратора? По стандарту должно быть, где оно? Точнее, почему оно с двумя подчёркиваниями?



Сам спросил, сам отвечаю: задефайнено в другом месте. Креактор не подхыватывает почему-то.
967533967568
#595 #967533
>>967530

>Новый вопрос: как мне из отрицательного float, 0.0f и положительного float сделать -чото, 0 и +чото соответственно?


>


>Для интов это элементарно: return b-a. А для флоатов?


Чё?
967539
#596 #967539
>>967533

Мне нужна функция, которая возвращает int меньше 0, равный нулю или больше 0 при a<b, a==b и a>2 соответственно.

Могу закодить в лоб, но хочется что-то покрасивее.
967541967564
#597 #967541
#598 #967546
>>967529
Вот да, это я тоже видел (комментарии), а не понимаю, как так. Где-то в стандарте описывается, что ли, как именно auto&& разворачивается?
967560
#599 #967560
>>967546
Вот тут описано довольно просто, но не знаю, поможет ли тебе:
http://stackoverflow.com/questions/29859796/c-auto-vs-auto
967593
#601 #967568
>>967530

>В C безопасности нет, зачем эта осторожность? Разве что для успеха ловли багов.


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

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


Ну пользовались они два года старой версией. Использовали либу у себя в проекте. А после обновления все места, где либа использовалась, перестали работать. Нехорошо как-то.
967588
#602 #967588
>>967568

>Ну пользовались они два года старой версией. Использовали либу у себя в проекте. А после обновления все места, где либа использовалась, перестали работать. Нехорошо как-то.



С хера ли они перестали работать? size больше не возвращает size? sizeof(yoba) не использовали?

Не могу понять источник проблемы.

>>967564

Помогло, но тут я понял, что Compare-функции в стандарте хотят другое.
967654
#603 #967593
>>967560
Спасибо, няша. Там все достаточно хорошо разжевано.
#604 #967624
for(i=huy; i!=zalupa; i++)

Как можно элегантно вынести i за скобки? То есть, сделать так, чтобы имя переменной было упомянуто 1 раз.
967633967634967641
#605 #967633
>>967624
Напиши макрос.
представляю, как сейчас подорвались java-макаки от этого слова
967640967641
#606 #967634
967643
#607 #967640
>>967633

Не макрос, а макро. Как это будет выглядеть? for(i,huy,zalupa,operator++)?

Есть вариант с range-forом и лямбдами, но он громоздкий же.
#608 #967641
>>967624
И вот ещё упомянутые сударем >>967633 макросы.
http://stackoverflow.com/questions/24392000/c-define-a-for-loop-macro
#609 #967643
>>967634

Выглядит неплохо.
#610 #967654
>>967588
Раньше:

for(int i = 0; i < myStr.size; i++)
{
myStr.str = 'a';
}

И всё собирается.

Сейчас:

for(int i = 0; i < myStr.size; i++)
{
myStr.str = 'a';
}

Выдаст ошибку ""size" is not an element of MyString".

Потому что MyString раньше имела такой вид:
struct MyString
{
PCHAR str;
size_t size;
}

А теперь такой:
struct MyString
{
PCHAR strBegin;
PCHAR strEnd;
}
#610 #967654
>>967588
Раньше:

for(int i = 0; i < myStr.size; i++)
{
myStr.str = 'a';
}

И всё собирается.

Сейчас:

for(int i = 0; i < myStr.size; i++)
{
myStr.str = 'a';
}

Выдаст ошибку ""size" is not an element of MyString".

Потому что MyString раньше имела такой вид:
struct MyString
{
PCHAR str;
size_t size;
}

А теперь такой:
struct MyString
{
PCHAR strBegin;
PCHAR strEnd;
}
967658967924
40 Кб, 440x262
#611 #967658
967662
#612 #967662
>>967658
Ну так поломается всё.

А вот было бы спрятано всё от пользователя в PVOID с непрозрачными API-функциями, такого не случилось бы.
967664967699967924
#613 #967664
>>967662
Фабрики, фабрики не забудь. И прокси.
967700
#614 #967699
>>967662
Ну какие фабрики и прокси? Опять ты вылез? Ты хоть осознаёшь, что ебля с байтами в PVOID не имеет ничего общего с ООП-паттернами?

Я тебе привёл конкретный (заметь, самый конкретный) пример проблемы, которая иначе не решается. А ты начинаешь кидаться говном и кричать.
967700967719
#615 #967700
#616 #967715
Знатоки шаблонов, как превратить пару типов в enum/число и использовать как ключ/индекс для контейнера?
Например

template<class A, class B>
void yoba()
{
std::map[A, B]
std::unordered_map[A, B]
std::vector[A, B]
}
967720967723
#617 #967719
>>967699
Декоратор визитора.
967737
#618 #967720
>>967715
Как пару
967727
#619 #967723
>>967715
Или например
enum Type { AB = 0, BA = 1};

template<class T1, class T2>
void yoba()
{
// 0 если T1 = A, T2 = B
// 1 если T1 = B, T2 = A
Type id = magic<T1, T2>
}
#620 #967727
>>967720
Какую пару?
967730
#621 #967730
>>967727
А, не правильно понял.

Юзай std::type_index.
967744
#622 #967737
>>967719
Зачем, когда обычный заголовок в PVOID (заметь, кроме сей и ассемблера, так нигде не решают проблемы) подойдёт?
967867
#623 #967744
>>967730
Тут указан пример для одного типа http://en.cppreference.com/w/cpp/types/type_index
А как скомбинировать типы не знаешь?

Насколько я понял, вот это исполняется в рантайме

unordered_map<size_t, string> container;
container[typeid(A).hash_code() + typeid(B).hash_code()] = "AB"
container[typeid(B).hash_code() + typeid(A).hash_code()] = "BA"

хотелось бы так же в компилтайме
296 Кб, 1280x998
#624 #967767
Кайф, ещё 50 строк и можно будет делать
callbacks.set<ReturnT, ParamT>("name", [] (ParamT x) -> ReturnT {})
и
ReturnT result = callbacks.get<ReturnT, ParamT>("name")(param)
967775
#625 #967775
>>967767
Но зачем?
967781
#626 #967781
>>967775
Иначе единственный выход писать
setCallback_Scalar_Array()
и
getCallback_Scalar_Array()

потому что std::function<T1(T2)> не кастуется ни во что другое
967816
#627 #967816
>>967781
Бля, опять проблемы http://ideone.com/6oLAjz
function<void(...)> и function<...(void)> не работают даже при перегрузке функции, а шаблоны где T = void это вообще отдельная история
#628 #967867
>>967737
Без UML-диаграммы непонятно.
967883
#629 #967883
>>967867
Для таких вещей нельзя написать UML-диаграмму, опять ты несёшь бред не по теме. Нету в UML соответствующих конструкций.
#630 #967924
>>967654
>>967662

Геттер сделать надо, говорил же.
968035
#631 #968031
Няши, чому main файл всегда без хежера? Неудобно же. Что будет если я сам добавлю его?
968041968077
#632 #968035
>>967924
Это возможно только с pvoid.

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

Подожди, я сейчас напишу минимально юзабельную либу для строк на чистом Си, заценишь.
968097
#633 #968041
>>968031
хедера, фикс.
#634 #968077
>>968031

>чому main файл всегда без хежера?


Зачем? В идеале в main ничего не должно быть кроме точки входа в программу и может обработки текстовых аргументов.

>Что будет если я сам добавлю его?


У тебя будет main с хидером.
968106
#635 #968097
>>968035

>Это возможно только с pvoid.



Теперь понял. Спасибо за объяснение.

Будем надеяться на то, что модули подъедут.
968141
#636 #968106
>>968077

main не может быть без заголовков, если только не включён PCH.
968127
#637 #968127
>>968106
http://cpp.sh/8soby
Вот тебе main без заголовочников. Или ты что то иное имел ввиду?
968247
#638 #968141
>>968097

>Будем надеяться на то, что модули подъедут.


>>967201
968247
#639 #968247
>>968127
И часто ты пишешь программы, единственным результатом которой может быть поедание процессорного времени и возврат результата в виде экзит-кода?

>>968141
Где почитать про это?
968364
#640 #968291
Шолом, крестачи.
Есть вектор a, положим - std::vector<int> a = {1,4,8,8};
Мне нужно как в дишечке - снять с него слайс, т.е. получить еще вектор который сделан по данным старого вектора.

Т.е. там бы я сделал int[] a = [1,4,8,8]; int[] b = a[1..$]. Тут делал std::vector<int> b(++std::begin(a), std::end(a));
Только вот я глянул на data() - и как выяснилось, эта проблядь второй вектор скопировала, а не просто указалась на данные первого.

Как это сделать? Ну т.е. чтобы второй подмассив показывал на данные первого, т.е. без копирования? Я пробовал ставить const - думал этой хуйне нужны гарантии что я там нихуя не поменяю - ей по барабану.
968340968388
#641 #968340
>>968291
В языках без сборки мусора такое сложно сделать. А конкретно с вектором нельзя, потому что вектор управляет памятью в которой хранятся его элементы. Ебись с итераторами.
#642 #968364
968665
#643 #968388
>>968291
Тебе придётся хранить в исходном векторе указатели или ссылки. Если ты будешь хранить в одном векторе данные, а в другом ссылки, то эти ссылки наебнутся при ближайшем перестроении исходного вектора.
968396
#644 #968396
>>968388

> то эти ссылки наебнутся при ближайшем перестроении исходного вектора.


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

Я думал, что или есть способ заставить вектор так сделать, или что в stl есть какая-нибудь обертка над парой итераторов.
968414
#645 #968413
Есть какие нибудь ресурсы на русском/английском, где хорошо объясняют, как работать с Qt в плане создания форм, подписывания на событий и прочим? Провёл достаточно времени за win forms и wpf, вот хочу в Qt вкатиться для GUI. Или лучше официальной документации ресурса нет
968419
#646 #968414
>>968396
Если не брезгуешь бустом, посмотри на это:
http://www.boost.org/doc/libs/1_62_0/libs/fusion/doc/html/fusion/view.html

Ещё в стандарте есть std::slice, но это очень узкая реализация.
#647 #968419
>>968413
Ну, документация там довольно неплохая. Если тебе понадобиться что-то конкретное сделать, шансы найти почти готовую реализацию в доках высокие. Ну если тебе просто нужно выучить до уровня "Qt на кончиках пальцев", то есть книги, но что-то конкретное я не могу подсказать.
Кроме этого, миллион статей в интернете и различные попенсурс проекты но это не точно
#648 #968606
Как почистить глобальный неймспейс от макродрисни? Если я сделаю хедер clear.h и скриптом соберу в него множество #undef, это сработает? Так кто-нибудь делае вообще? Схема получается такая:

mylib.h:
#include <clib.h>
...

main.cpp:
#include "mylib.h"
#include "clear.h"
968640
#649 #968640
>>968606
Сработает, но зачем?
968894
#650 #968665
>>968364

Дык есть ещё вариант от МС, который более вероятен. Там тоже PCH?
#651 #968894
>>968640
Макросов очень много. Кому они понадобятся - может не подключать clear.h
121 Кб, 1280x997
#652 #968968
Рендерим скриптом пустое окно на простое ЦП, уже неплохо
Закинуть ещё десяток колбеков и можно игру написать
#653 #968974
Как в плюсах сделать многопользовательское приложение. Вот есть сервер для работы с базой данных, и должна иметься возможность параллельно несколько пользователей обслуживать, как такое реализовать? Чтобы А ввел, команду, потом Б, потом А еще одну. Думал про форк, но это же не распаралеливание, там дочерний процесс выполняется, а потом снова родительский.
968979969050
#654 #968978
Есть ли в stl какой-нибудь единый тип итератора? Хочу передавать в функцию одномерный вектор/массив/множество, через который пробегаюсь один раз. Логично было бы не бойлерплейтить и перегружать функцию, а просто передавать в неё итераторы начала и конца. Если нет, то как это нормально сделать? Не приводить же тип каждый раз.
#655 #968979
>>968974
Для распаралеливания кода в одном потоке можно использовать корутины, в с++11 кажется что-то в этом роде добавили в стандарт (std::future), или это только для тредов, не помню
#656 #968985
>>968978
template<class T1 <class T2>>
void yoba(T1<T2> container)
Если не ошибаюсь, дальше вызываешь begin и end
969003
#657 #969003
>>968985
template <template <typename ARG> class CONT>
void (const CONT<ARG>& container)
#658 #969011
>>968978

>Есть ли в stl какой-нибудь единый тип итератора?



Если у объекта есть некоторый набор свойств, и он наследник инстанса темплейта iterator, он называется итератором.

http://www.cplusplus.com/reference/iterator/

Чтобы сделать функцию, принимающую итератор, нужно функцию занести в темплейт. Функций станет много (по одной на каждый набор аргументов темплейта), но ты этого не заметишь, если будешь использовать угадывание аргументов темплейта.
969231
#659 #969032
Не знаю точно про необходимость наследования.
#660 #969036
У вас когда-нибудь было на работе такое, что налабал алгоритм, и он почти работает, и ты несколько часов смотришь в код (элементарный и понятный) и не видишь ошибку?
#661 #969038
Что значит operator++(int)?
969042969048
#662 #969042
>>969038

Если это метод: ошибка компиляции, так как аргументов быть не должно.

Если это функция - перегружает оператор ++ для интов.
969045
#663 #969045
>>969042

Ан, нет, переопределять встроенные операторы низзя.
http://ideone.com/58WIn9

Так что это может быть только метод, и метод operator++ не может принимать аргументы.
969055
#664 #969048
>>969038
Постфиксный инкремент.
sage #665 #969050
>>968974
std::thread
#666 #969053
Сап эксперты. Прошу пояснить ньюфагу за механизм исключений. В чем его предназначение?

Правильно ли я понимаю, что вот это вот try-catch, это типа эволюционировавшее сишное
If (foo() == -1)
{
// проверить значение errno и действовать дальше исходя из него
}
// все хорошо, работаем дальше
969057
#667 #969055
>>969045
Я нашёл такие декларации:
Iterator& operator++();
Iterator& operator--();
Iterator operator++(int);
Iterator operator--(int);
969287
#668 #969057
>>969053
Да только ещё исключение это полноценный класс в который можно при выбрасывании засунуть любую информацию и чуток логики для взаимодействия с ней. Обрабатывается не на месте а где-то выше по стеку вызовов. Когда кидаешь исключение посреди функции обычно приходится ломать голову как освободить ресурсы и вообще выйти из этой жопы чтобы приложение продолжило работу когда эта функция снова будет вызвана после обработки исключения, которая обычно происходит где-то далеко и не имеетпрямого доступа к тому с чем эта функция работает.
969226
#669 #969226
>>969057

>исключение это полноценный класс


throw 1.5;
#670 #969229
>>968978

>Если нет, то как это нормально сделать?


Темплейты.
#671 #969231
>>969011

>он наследник инстанса темплейта iterator


Што?
#672 #969233
https://pastebin.com/9cVUnNMb
Подскажите пожалуйста ньюфагу где я обосрался: шахматная доска, хочу пройтись по диагоналям н-точки и поменять значения, для этого ищу 1 - начало левой диагонали, 2 - начало правой диагонали.
969278
#673 #969240
>>968978
Ну вот дуболомное решение:
http://ideone.com/u5FmAC
#674 #969278
>>969233
Ну нарисуй чтоли, что хочешь.
969325
#675 #969287
>>969055

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

http://stackoverflow.com/questions/3846296/how-to-overload-the-operator-in-two-different-ways-for-postfix-a-and-prefix - аааааааа какой мудак додумался до (int).
969289
#676 #969289
>>969287
Можешь почитать "Дизайн и эволюция С++". Там сам Страуструп поясняет почему да как сделано.
314 Кб, 488x451
#677 #969325
>>969278
Хочу менять значение диагоналей от н-точки. То есть везде где стрелочки (кроме точки-фигуры) должны поменяться значения (двухмерный массив).
969403
#678 #969354
Ананасы, вопрос такой. В общем есть некоторый интерфейс наподобие:
https://pastebin.com/zKsCUdsg
Итак, после некоторой стабильной работы (пара десятков запусков с отладкой, например), fn() начинает валиться. Я стал копаться из-за чего это, дело оказалось в том, что не смотря на то, что c указывает на валидную область память и читается (при этом и ичтается его атрибут _element), результат же выполняемой функции c->getElement() возвращает указатель на область памяти по адресу 0x00000001. Что за хуйня?! Ничего касательно этого кода не меняется абсолютно, что может быть причиной такого поведения?
969366969425
#679 #969366
>>969354
Первое, что приходит на ум - ты объект класса на стеке создаёшь. После выхода из createSomeClass() объект утилизируется. Это единственное, что приходит на ум с таким количеством информации.
969369
#680 #969369
>>969366
В том то и дело, что все в куче. По сути, getElement возвращает только указатель, который уже хранится в объекте. Через GDB я читаю все поля объекта нормально, но вот после вызова getElement возвращается какая-то хуйня, не смотря на то, что память вроде как нормальная.
Единственное, что помогает это перекомпилировать все с нуля, но это пиздец идиотия, я считаю.
969372969442969443
#681 #969372
>>969369
Ну так в чём проблема перекомпилить?
969375
#682 #969375
>>969372
Минут по 5 собирается и каждый раз в отладку... А как с релизом делать, там же никак и не поконтроллировать, просто упадет и все.
969379
#683 #969379
>>969375
Я не понял. Как перекомпиляция решает проблему?
969392
#684 #969392
>>969379
После нее возвращается нормальный адрес, а не 0x00000001. При том, что ничего не меняется. Я вообще нихуя не могу понять... может на оперативку стоит сетовать теперь.
969395969397
#685 #969395
>>969392
Хорошо. Ты перекомпилируешь 5 минут - проблема уходит. Я что-то не понимаю?
969443
#686 #969397
>>969392
Имею в виду, если после этого проблема уходит, то что дальше не так?
969401
#687 #969401
>>969397
Ну так она возвращается потом через некоторое время. Может действительно стоит забить на это, но я думаю, как бы это не вылезло все в риалтайме.
969402969442969443
#688 #969402
>>969401
У тебя просто говнокод.
969408
24 Кб, 584x482
#689 #969403
>>969325
Попробуй что-то такое. Просто самое тупое, что в голову пришло (в вольфраме массивы с 1 начинаются, так что небольшие корректировки нужны) кеке.
#690 #969408
>>969402
Ниет.
#691 #969425
>>969354
Так можешь больше кинуть кода?
969444
#692 #969442
>>969401
Undefined behaviour, блядь.
>>969369

>В том то и дело, что все в куче.


_element в куче?
Отдели функцию от остального кода и вызывай её в цикле. Олсо, возвращать указатель на приватную переменную в геттере - долбоебизм.
969445
#693 #969443
>>969401>>969395
Undefined behaviour, блядь.
>>969369

>В том то и дело, что все в куче.


_element в куче?
Отдели функцию от остального кода и вызывай её в цикле. Олсо, возвращать указатель на приватную переменную в геттере - долбоебизм.
#694 #969444
>>969425
Что-то около вот этого, если интересно
https://pastebin.com/hrrE7bCT
969446969449
#695 #969445
>>969442
Они там охуеть какие приватные. Я этот заголовочник не менял, хотя почему-то у меня подозрения по поводу публичности полей. С другой стороны, ни friend-классов ни аксессоров нет.
https://pastebin.com/YYG4Teix
#696 #969446
>>969444
Нам не интересен твой говнокод, нам нравится помогать людям. Если ты не можешь поделиться программой, которая ТОЧНО падает после длительного выполнения - забей и забудь.

Олсо, если проблема в памяти, то с большой вероятностью у тебя должен регулярно падать браузер - у меня мемтест ничего не находил, зато падали Опера, Хром, ФФ и ошибки в Prime95/LinX были.
969448969449969494
#697 #969448
>>969446

>> которая ТОЧНО падает после длительного выполнения


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

>> Олсо, если проблема в памяти, то с большой вероятностью у тебя должен регулярно падать браузер - у меня мемтест ничего не находил, зато падали Опера, Хром, ФФ и ошибки в Prime95/LinX были.



В том то и дело, что нет.
#698 #969449
>>969444
Этот анон >>969446 всё по делу сказал. Ровно тот кусок, по которому что-то можно понять, ты не скинул.
#699 #969494
>>969446

>нам нравится помогать людям


Говори только за себя.
#700 #969506
ребят, что посоветуете читать по плюсам начинающему?
969507
#701 #969507
>>969506
шапку треда
969509
#702 #969509
>>969507
хитёр
но я про литературу
начал "С++ для начинающих"
стоит ли продолжать, ибо там Dev-C++ использую зазорно ли?
969510
#703 #969510
>>969509
Если прочитал и все осознал - начинай майерса читать.

Про Dev-C++ я не понял, но если ты сам это используешь - выброси, и поставь студию
969941
45 Кб, 1465x758
#704 #969513
Ах, и ещё одно
Это норма?
969591
#705 #969516
>>961839 (OP)
Куда делся ОП-стихописец?
#706 #969591
>>969513
Спроси в /s/.
#707 #969679
Сап, анон, нужна твоя помощь или совет.
Последние пару недель по вечерам казуально вкатываюсь в плюсы, пописывая небольшую игру на SDL, так чисто для себя for fun.
В самом SDL нет ничего, кроме биндингов к битмаповым текстурам OpenGL, так что движок по сути я пишу сам. Так вот я упёрся сейчас в необходимость некоего "Tween Manager'а", который бы мог управлять изменением во времени свойств моих объектов, например изменить координату 'x' некоторого спрайта на +50 пикселей за 5 секунд с интерполированием по синусоиде, чтобы было плавно.
Проблема только в статической типизации, есть например свойство "прозрачность" с типом unsigned char (от 0 до 255), есть координаты в int, угол наклона в float... Пока единственное, и возможно очень тупое решение, которое пришло мне в голову, это писать всю логику твинера на (void*) и кастовать к нужному типу внутри, что-то на подобии:

MySprite★ player = new MySprite();
player.x = 150;
player.y = 300;
int newX = 200;
// переместить спрайт по х из положения 150 в 200 за 5 секунд
TweenManager -> tween ( &(player.x), 'int', &(newX), 5000, TWEEN_EASE::SIN);

void tween (void★ targetValuePointer, const char★ valueType, void★ tweenToValue, uint32 milliseconds, TWEEN_EASE ease);

Но это скорее хак, нежели правильное решение, да ещё и для целевого значения нужно выделять переменную, чтобы передавать её адрес. Не самый лучший способ в общем. А кучу врапперов для врапперов для свойств писать так не хочется...
969686969740
#708 #969686
>>969679
Кому-то может показаться, что здесь идеально подойдут шаблоны, но на самом деле нет, потому что твины будут храниться в векторе, а тип свойств нужно определять в рантайме, чтобы можно было, к примеру, загрузить из файла-скрипта кастомную сцену с твинами.
969688
#709 #969688
>>969686
Ну я бы в этом случае упоролся виртуальными функциями. Или это какой-то закрытый класс из либы?
969691
#710 #969691
>>969688
Пока что это несуществующий класс из моего воображения
969693
#711 #969693
>>969691
Гуд. Я вижу тут 2 выхода:
1. Создаёшь базовый абстрактный класс с виртуальной функцией tween. Потом у дочерних классов реализуешь как надо каждый.
2. (неочень способ) Делать, как ты хотел. Для этого существует dynamic_cast.
#712 #969740
>>969679
ECS не поможет?
#713 #969941
>>969510
ещё о чем хотел спросить
вот есть такое приложение на ведромб и ios "SoloLearn"
Там всё подробно объяснено
Замещает ли оно книгу "С++ для чайников"?
969992
#714 #969968
Хочу, чтобы компилятор предупреждал меня о том, что:
- итераторы начала и конца заведомо относятся к разным объектам
- имя, которое является частью стандарта языка, переопределяется в одной из либ/заголовков (при using namespace std).

Такие есть? Или пока что это только статические анализаторы умеют?
969974969983
#715 #969974
>>969968
скачиваешь ллвм и пишешь чекер для статик аналайзера(если там такого еще нет)
#716 #969983
>>969968

>Хочу, чтобы компилятор предупреждал меня о том, что:


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


Что в этом плохого? Чтобы он орал на определения swap, begin, end, operator<< и пр. подобное для твоих типов?
970328
#717 #969992
>>969941
Лучше книги ничего нет
#718 #970134
Может кто перекотить тред?
#719 #970152
>>967461
Запилил Рабина-Карпа для множества образцов, работает в десятки, если не сотни, раз быстрее. Даже хэш считать не пришлось, unordered_set само всё делает.
#720 #970328
>>969983

>swap,


Move constructor, метод.

>begin, end, operator<<


Методы.

Мне нужно точно знать, что я использую именно родной шаблон, родную функцию, а не определённую где-то случайно.
970714
#721 #970714
>>970328
Для этого ввели неймспейсы. А заставлять компилятор выполнять работу статического анализатора врядли кто-то станет.
#722 #970817
970954
#723 #970954
>>970817
Почему так сложно дать нормальную ссылку? >>970816 (OP)
#724 #975803
У меня есть дерево, нужно реализовать поиск по имени вершин. Но так, чтобы потом по результатам поиска была возможность еще раз провести поиск. Не могу придумать, как так передать вершину в метод рекурсивного поиска, чтобы дерево-результат не было зачищено.
976263
#725 #976263
>>975803
Нахуй ты в мёртвый тред пишешь?
976623
#726 #976623
>>976263

>Нахуй ты в мёртвый тред пишешь?



Нахуй Ты в мёртвый тред пишешь?
976946
#727 #976946
>>976623
Тебе не говорили, что отвечать вопросом на вопрос не вежливо?
977046
#728 #977046
>>976946
Ты мне сам вопросм на вопрос отвечаешь.
977051
#729 #977051
>>977046
Друг мой, ты поехавший? Где ты там увидел вопрос? Ты всего лишь жаловался, что не можешь что-то придумать.
977067
#730 #977067
>>977051

> Где ты там увидел вопрос?


> на вопрос не вежливо?


>ты поехавший?


>ты

19 Кб, 740x327
10 Кб, 670x380
#731 #987040
Привет, анончик. Ебусь с винформ. Расскажи как я могу LPWSTR засунуть в textbox или LabelBox? Или расскажи куда я могу эту шляпу засунуть? Нужно сделать список (сетевых дисков) а в NETRESOURCE Localname хранится в LPWSTR. Буду очень благодарен. Прикрепил скрин части кода где оно должно быть и скрин формы(сам не знаю зачем).
987049987084
#732 #987049
>>987040
Анончик, выручай.
#733 #987084
Тред утонул или удален.
Это копия, сохраненная 22 мая 2017 года.

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

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