Вместо шапки - https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/Прошлый >>979476 (OP)Теги: кресты, cpp
Я тут читал гайд по правильному оформлению кода, да и от других подобное слышал то что строки более чем из 80 символов следует переносить на новую строку. Стоит ли это делать? И что если у меня блоки кода только уходят на 40 символов? Как тогда переносить код?
>>993469Твоё только в /dev/null переносить.
>>993481Твой мозг уже там
>>993469да
>>993469В фирмах, где макакам выдают мониторы моложе 2002 года, и которые больше 19" в диагональ, обычно строку делают в 120 символов. Но, можешь не волноваться, тебя даже в самый закудышный бодишоп не возьмут.
>>993469http://e-maxx.ru/bookz/files/golub_cord.pdf
Ононы, как в визуалке 2010 года можно сделать чтобы по нажатию на button отредактировало в определенных местах готовый word документ? Добавил СОМ-ссылку Microsoft Office 14.0 Object Library и Microsoft Word 14.0 Object Library, ничего не выходит.Пробовал делать по учебнику MS Visual C++ 2010 в среде .NET. Нихуя не вышло. Шляпа срочно нужна для диплома, но в С++ я ни в зуб ногой.
>>993595OLE Automation
Почему не получается функцией WriteConsoleOutbutA вывести символы псевдографики?Вместо этого выводит знаки вопроса или какую-то мишуру, в зависимости от шрифта. В то время как тот же набор данных выводится обычным cout безупречно, да и другие символы вроде латинских букв выводятся WriteConsoleOutbutA как надо. В чем проблема?
>>993609Нету такого.
>>993614>Вместо этого выводит пробелы, знаки вопроса или какую-то мишуру, в зависимости от шрифта.
>>993617В COM-компонентах.
>>993595Вообще на крестах это писать - ад, лучше всего на c# бахнуть или js+activex.Вот по шарпу мануалhttps://support.microsoft.com/en-us/help/316384/how-to-automate-microsoft-word-to-create-a-new-document-by-using-visual-c
>>993614Опять эти спермоклоуны со своей командной строкой из 1992 года
>>993624Одновременно чекал. Там тоже нету. >>993628Дак сказали эту хуйню на ЗИБЛЮЗБЛЮЗ писать. Был бы выбор - писал на своем питоне или шарпе.
>>993633Сказал прыщеклован, у которого и в 2017 ничего, кроме командной строки, толком и нет.
>>993614Это какой-то пиздец, господа. Переключил я шрифт сосноли с точечного на lucida - пробелы превратились в вопросики. Запустил программу еще раз - теперь все нормально отпечатано, в lucida. Поменял шрифт на точечный, точно такой же, какой был изначально - и теперь символы выглядят нормально и на изначальном шрифте. Запустил программу в третий раз - и теперь все символы отображаются на изначальном шрифте без переключения шрифта. Что это за хуйня? Как это работает? Как мне создать приложение, которое, например, выводит cp437 на дефолтном шрифте с любого компьютера без ебатни со шрифтами, бесплатно без формочек и юникода?
>>993663Ах тыж блять, запустил программу в четвертый раз, и снова вместо символов пробелы. Что за ебаный пиздец?
>>993665Нашел новую деталь: эти символы отображаются как пробелы только в точечном шрифте 8х12. Вернее, не все, а все, кроме вот этого: . Поэтому в моей коробке всегда рисуется только верхний правый угол.Так вот, в точечном шрифте 7х12 все символы отображаются как , кроме того самого уголочка, который стойко держится в верхнем правом углу. При чем они не только превращаются в треугольники при переключении шрифта, но и остаются такими при перезапуске программы.5x12 - аналогично.8x9 - снова пробелы.6х9 - то ли снова треугольники, то ли запятые какие-то, мелко, плохо видно. Угол на месте.16x8 - пробелы.4х6 - походу, треугольники, мелко пиздец.16х12 - пробелы.12х16 - ну вот тут уже точно апострофы или запятые развернутые.10x18 - треугольники.Продолжаю зоонаблюдения и запрашиваю помощи.
>>993666Пиздец, макаба не пускает символы. Короче, угол который отображается - в таблице https://en.wikipedia.org/wiki/Code_page_437 под номером 187. Треугольник - 31.
>>993663Нахуя тебе все это сдалось?! Сделай, если уже так надо, свою псевдо-консоль на гуе, если ты там какой-то рогалик пилишь или что. На винде командная строка КОНЧЕНАЯ, это тебе не zsh или bash хотя бы.
Еще одно зоонаблюдение: если ставить цп сосноли через SetConsoleOutputCP или system("chcp 437") (не имеет значения) - то символы перестают отображаться даже при cout. Если убрать это и оставить дефолтную 866, то символы отображаются через cout безупречно.
>>993668Есть какой-нибудь гайд, как так сделать? Был бы премного благодарен.
Здравствуйте, не подскажите какой-нибдуь ресурс по созданию GUI приложений на QT либо на VS. Буду очень благодарен!
>>993683> не подскажите какой-нибдуь ресурс по созданию GUI приложений на QTdoc.qt.io
>>993637Ну вот просмотри. Можёт что наковыряешь.https://code.msdn.microsoft.com/office/CppAutomateWord-28938be1
>>993637Вот ещё мануал.https://support.microsoft.com/en-us/help/316587/how-to-automate-embedded-office-activex-documents-with-c
>>993671Гайд хз, но думаю чувак предлагает через winapi создавать окно, сделать его черным, и имитировать командную строку окном с текстовым полем внутри главного окна шириной в всё окно и высотой с 1 символ
>>993469Строки должны быть такие, чтобы при их чтении целевой аудитории не приходилось водить горизонтальный скролл туда-сюда. Из этого выходит: Если ты пишешь говнокод в стол - длина любая. Если ты в закрытой конторе, и у всех стоят одинаковые мониторы, и никто не пользуется разделением окон - тогда на всю ширину ваших мониторов. Ширина в 80 символов была придумана хуилион лет назад, когда нужно было выбрать минимально читаемый размер символов для консольных терминалов. Собственно, это просто стандарт, который актуален, если иное не указано. Лучше, если чтение кода даже не будет заставлять двигать глаза по горизонтали.В любом случае, правила написания кода нужны для того, чтобы код удобно было читать.
>>993645Спермодебилу НИБАМБИТ
>>993614>>993663Спермодебилы, обсуждайте WinAPI и спермопроблемы проблемы в /s/
>>993668> На винде командная строка КОНЧЕНАЯГоворят, с полгода назад она начала поддерживать управляющие ASCII-коды. Всего-то 40 лет прошло с момента принятия стандарта.
>>993671Я бы ради прикола завел все на OpenGL, но еботы с этим, конечно же, прибавится, хотя, в целом, ничего сложного быть не должно. Плюс опыта в корзину (научишься шрифты рендерить и рисовать полигоны текстурированные).Я бы, может, такой хуйней сам занялся. Да лень пиздец. Пойду лучше посру.
Как можно замерить время выполнения функции?
>>993759http://www.cplusplus.com/reference/chrono/
>>993671http://www.libsdl.org/http://lazyfoo.net/tutorials/SDL/index.phphttps://habrahabr.ru/post/198600/
>>993671Если у тебя десяточка, включай WSL и наслаждайся рабочей консолью и соответствующим стандарту компилятором.
С помощью каких алгоритмов это можно реализовать? Зачет горит.
>>993724>>993726Скачал какую-то библиотечку. Нихуя не понял. Не осилил.
>>993793Это матанКакие нахуй алгоритмы?
>>993796Это линалКакой нахуй матан?
>>993793google -> line segment intersection
>>993793мне в свое время сильно помог этот ответ: http://stackoverflow.com/a/565282
В заочном тестовом задании мне надо было разработать класс. В ТЗ были указаны конструктор по умолчанию, конструктор копирования и деструктор. Чтобы соблюсти правило трех, я добавил еще оператор присваивания (было разрешено добавлять свой функционал). Стоит ли еще добавить конструктор перемещения и оператор присваивания при перемещении для правила пяти, если меня об этом не просили?
>>993810> Стоит ли еще добавить конструктор перемещения и оператор присваивания при перемещенииВряд ли они знают, что это такое.
>>993810Конечно стоит, иначе не пройдёшь тест.директор-той-конторы
>>993810Правило пяти нужно для того, чтобы вспоминать о нем, когда класс становится реально сложным.В твоем примере ты можешь их добавить, чтобы показать что ты о нем знаешь. А так, если бы ты делал это для себя, то не надо.
Как узнать количество определенного символа в одной строке?
>>993831http://stackoverflow.com/questions/3867890/count-character-occurrences-in-a-string
>>993810>> В заочном тестовом задании мне надо было разработать класс>> было разрешено добавлять свой функционалОхуеть задачи, одна охуительнее другой.
Как вы парсите строки?Хочу читать OBJ файлы, у которых обычно они имеют вид: <тип данных> <данные>Пока есть идея завести словарь из строковых литералов типов и лямбд для разбора данных.Получился вот такой пиздец https://pastebin.com/NQvtWifEЕсть идеи получше?
>>993798Это аналгеом какой линал?
>>993842С таким же успехом можешь использовать указатели на функции, которые можешь разместить в анонимном пространстве имен, вместо того, чтобы использовать функциональные объекты (хотя, расходы будут небольшие, если лямбды помещяются в кусочек выделенной памяти функциональным объектом, однако здесь это не то место, где нужно искать оптимизации).Наверно, вместо этой тягомотины, что ты написал, проще было бы получать данные через sscanf если уж в c код полез.
>>993793Пиздец какой-то, какие-то наложения, числа, перечения. В выводе вообще цифры какие-то, нихуя не понял. Чему вас там учат?
блядь, что не так то?
>>993866>Чему вас там учат? Это называется утилизацiя человечишков. Чтобы не мешались под ногами у номенклатурных сынков и дедков со связями в ЦК КПСС.
Нужен ли деструктор в собственном итераторе?
>новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими.Несколько неправда.
>>993865>если уж в c код полезГде, например?Мне наоборот хочется в стиле плюсов делать, только что-то не понимаю что это значит.
>>993923Да хоть те же регекспы.
Если я напишуtypedef unsigned int zalupa;То zalupa будет читаться как "unsigned int"?
>>993926да. Но вообще, сейчас уже не 1999 год, по-этомуusing zalupa = unsigned int;
>>993927Здорово! Спасибо.
Как на последний Visual Studio установить этот самый сишарп? У меня уже дикий бугурт, ничего непонятно.
>>993935Visual Studio 2015 Community, всё есть там из коробки. Проследуйте к шарпоёбам за деталями.
>>993935>>993938Орнул с дауновВызовите мастера-программиста на дом и он вам за пятихаточку всё сделает
>>993935Ай блджад, тредом промахнулся, сорри
Создаю объект:``angle = new ModelAngle();fprintf(stderr, "angle = %X\n", angle);``В его конструкторе:``ModelAngle::ModelAngle(){ fprintf(stderr, "ModelAngle = %X\n", this);}``И что ж я вижу?``ModelAngle = 1F31160angle = 1F31180``Ну и при удалении:``Error in `./a.out': double free or corruption (out): 0x0000000001f31180``Почему адреса не совпадают?
>>993984Братишка, жахни через ideone.
>>993985https://ideone.com/AbcCuC
>>993999Ну тут на 8 байт отличается, а не на 32, но всё равно отличается.Я где-то с наследованием накосячил?
>>993999Да, в моём коде у базового класса полей на 24 байта. Вот и разница на 32 байта.Это же 8 байт - длина указателя vtbl? Или чего? Почему так?
>>994007http://stackoverflow.com/questions/22256620/why-pointers-to-the-same-object-have-different-valuesПо поводу падения программы: на Angle нужен виртуальный деструктор.
>>994018А ведь ты прав.https://ideone.com/VuJKVb
Анон, есть пера вопросов.Если член класа это вектор. Нужно ли его руками очищать в деструкторе?И второй вопрос. Есть класс, который содержит некоторые поля и другой объект.class A { private: int x; B b;}Как объект B может получить доуступк х?
>>994018Хм, и правда. Но адреса всё равно не совпадают.То есть указатель на Angle на 8 байт (vtbl?) отличается от указателя.То есть, указатель на Angle в принципе не должен знать, что этот Angle является ещё и ModelDevice?И таки да, если изменить порядок наследования, адреса совпадают.
>>994094Передаешь в класс B указатель на класс A. Объявляешь хоть где в декларации класса дружественный класс, то есть friend class B; Тогда B будет иметь доступ КО ВСЕМ членам класса А.
>>994094>Если член класа это вектор. Нужно ли его руками очищать в деструкторе?Не нужно. Деструктор вектора сам удалит своё содержимое. Другое дело, если вектор хранит указатели на объекты в куче, которые ты создавал через new. Тогда да, их надо удалять самому.>Как объект B может получить доуступк х?Лолникак. Объявить friend class B внутри A. Только по-моему это говорит о том, что ты что-то делаешь неправильно.
>>994100>>994098Спасибо.>Только по-моему это говорит о том, что ты что-то делаешь неправильно.Вероятней всего.У меня следующая проблема. Есть вектор с объектами и все эти объекты должны использовать несоклько общих переменных. Сделать через глобальные переменные - некрасиво. А как правильно?
>>993999Probeloblyad is not a men.
>>993894Добавь boost_system в линкер
>>994018Во, и если сделатьdelete(dynamic_cast<ModelAngle*>(angle));то тоже всё работает.
Господа, прошу, я заебался. Ну не понимаю я что происходит.Фишка в чём? У меня программа... работает. Но она не работает под убунтой и вообще на университетских компьютерах. Не работает и в IDEONE (ну, там тоже gcc++). Я даже почти уверен, что я действительно не прав и то, что программа работает у меня и одногруппников - заслуга, скорее, компилятора, чем моя. Прошу, помогите.Правильный вывод - на пике.Текст программы (ну, последнее изменение):pastebin.com/Ys6u2W9bОшибки в IDEONEПрошлая версия: http://ideone.com/FwMMBaПоследняя версия: http://ideone.com/zdkbHQ
Инициализация переменной – это?1 Каждое присвоение ей значения2 Последнее использование переменной3 Объявление переменной4 Первое присвоение ей значения
>>9941463 и 4 одновременно.
>>9941464
>>994140В рализации функции которая начинатеся с 15 строки нет возвращаемого значения, тогда как сигнатура требует. Получается UB (скорее всего все кончается разименованием нулевого указателя) поэтому результаты в разных компиляторах разные. Тот в котором работает (скорее всего) отпимизирует код выбросив нахуй код с UB (хитрожопые оптимизирующие компиляторы такое любят), потому и кажеться что "работает". Если интересно можешь изменить 392 строку на что-то типа cout << endl << a << endl << "TEST" << endl; и запустить на компиляторе на котором "работало" чтобы посмотреть как работает теперь.
>>994158Почему она вообще скомпилировалась? Всегда же ругается, если не выводится ничего.
Зочем писать произвольный блок кода не связанный ни с каким оператором в фигурных скобках?
>>994159Предупреждения зависят от ключей. Почти что самые параноидальные - -Wall -pedantic для gcc.
>>994159Всегда ругался скорее всего статический анализатор твоей IDE. А комплятору похуй. В gcc вроде можно ворнинг включить. Ну и в main стандарт разрешает не писать return - должно добавляться return 0.
>>994167Чтобы переменные разрушались, и освобождалось место и другие ресурсы, связанные с переменными (мьютексы, например).
>>994167Чтобы ограничить видимость переменной dos_header или чтобы переменная dos_header уничтожилась сразу а не в самом конце выполнения функции (внешнего блока кода).
>>994172>>994173А, типа скоуп такой неявный? Спасибо.
>>994158>>994159Окей, допустим. Но умножение-то всё равно не правильно работает (в последней версии), а если брать старую, то там всё равно ошибка двойного освобождения памяти. И у меня, хех, всё ещё работаетhttp://ideone.com/v6ClEO
>>994175*неправильноА сылка на старую-исправленную
>>994174В нём нет ничего неявного. Фигурные скобки - это блок кода (statement по стандарту, ЕМНИП), а не часть while-if-чототам. while и for могут быть вообще без фигурных скобок.
>>994174Это скоуп явный.
>>994140> Фишка в чём? У меня программа... работает.Хуй с два. Компилируется ≠ работает.>pastebin.com/Ys6u2W9bНу полюбуйся на отчёт valgrind-а для твоей "работающей" программы. Куча use after free.http://paste.ubuntu.com/24616911/
>>994140>я заебался. Ну не понимаю я что происходит.Для этого придумали valgrind.
>>994190>>994188Ну, она выдаёт тот результат который нужен - значит работает. Просто не везде и через жопу. >valgrindЯ даже не знаю, что это. Погуглю. >use after free.Ну, это довольно очевидно учитывая ошибки двойного осовбождения в другом компиляторе. Делать-то что? Я не понимаю что я делаю не так. Возможно, потому, что я мыслю категориями языков в которых нет ебучих указателей и ссылок. И где можно спавнить объекты по КД, возвращать объекты(ссылки) на объекты созданные внутри функций и так далее, а они сами уж когда нибудь, когда станут ненужны, исчезнут. И я всё ранво не понимаю, что происходит :(
>>994194> Делать-то что?Непонятно, зачем в Vector::copy ты выделяешь/освобождаешь память. Судя по логике работы Vector::operator=, copy должна просто копировать из другого массива.Подумай над этим.
>>994194>>994200Переделал твой copy к такому виду:void copy(int *v) { for (int i = 0; i<this->n; i++) { this->v = v; } }Результат налицо: http://paste.ubuntu.com/24616978/
>>994200cpp.sh/4fybtА тут работает. Только с рандомом что-то не так.>в Vector::copyЯ его вообще сотру если надо. Он был нужен для того куска который уже переписан иначе.
>>994202Макака потёрла индексацию
>>994202хм. Когда-то он выглядел именно так. Но, видимо, была другая ошибка и всё равно ничего не работало. А сейчас она исправлена. Спасибо. Хотя я всё равно не совсем понимаю. C не может хранить объекты? Он удаляет их сразу после завершения функции? Или что?
>>994207Ты их удаляешь когда не надо.
>>994208Я где-то явно писал удаление? о.О
>>994202http://codepad.org/hHhWINzDIDEONE, кажется, лихорадит, Я попробовал запустить здесь с исправленным copy.Опять ошибается, там где переопределённое умножение (ну, и, соответственно, те же проблемы будут со сложением и прочим. Понять бы что не так и я исправлю их все)
>>994106Ну передай указатель на структуру с этими переменными или на каждую переменную, по желанию, в конструктор или через сеттер. И все дела.
>>994216>Опять ошибаетсяСкомпилировал с -O3http://paste.ubuntu.com/24617060/
>>994222Единственное, что я могу понять так это то, что в твоём компилировании он всё же запихивает правельные значения (64-8-8-4), в отличии от codepad, у которого там уже лежит стрёмная хрень. Но это и всё.
>>994222http://codepad.org/TwwiR44rЯ вижу ошибки связанные с ostream. Но всё, что я могу придумать - это сделать вот так. И это не поможет с остальным
Вообще шикарный код.@return Ничего не возвращаетВ конце стоит return, который возвращает.В начале офигенно сделана проверка на присваивание самому себе. Через оператор ==. Ну, в принципе, сравнивать адрес this с адресом аргумента бессмысленно, т.к. последний передаётся по значению, а не по ссылке.У Страуструпа, кажется, была имплементация вектора в книге. Почитай, что ли.Складывается впечатление что тут проще переписать с нуля.P.S. и принято исключения наследовать от подходящего исключения из стандартной библиотеки и переопределять функцию what(), а не operator<< для исключения.
Можете рассказать о подводных камнях использования std::ofstream? 1. Нужно ли вызывать flush() после каждой записи, зачем он вообще нужен? 2. Что нужно проверять, чтоб понять, что операция прошла успешно? Всякие там good()/bad()? 3. Вообще std::ofstream еще актуален или уже устарел? 4. Позволяет ли он писать внахлёст в середину файла? 5. Чтобы вставить данные в середину файла нужно перезаписать первую половину в новый файл, добавить новые данные, и потом продолжать писать вторую половину?
>>994231>@return Ничего не возвращает>В конце стоит return, который возвращает.Очевидно, потому, что раньше он ничего и не возвращал. Я за сегодня этот оператор трижды переписал пока у меня хотя бы до умножения стало доходить. >проверка на присваивание самому себе.Это не она, хех. Это проверка, скорее, в духе "если у них одинаковая длина и каждое значение одинаково, то ничего присваивать и не нужно">P.S. и принято исключения наследовать от подходящего исключения из стандартной библиотеки и переопределять функцию what(), а не operator<< для исключения.Про это как-то не натыкался, но спасибо, это я бы хотел сделать. Переписать с нуля? Можно. А толку-то? У меня всё равно будут ошибки связанные с памятью. Потому, что я не понимаю, как работает память. Все эи задания с сололёрнов прохожу, но в итоге ничего не могу вынести. Мне бы сдать это и забыть про кресты, но... эх
>>994240>Переписать с нуля? Можно. А толку-то? У меня всё равно будут ошибки связанные с памятью.Переписать с нуля, глядя в Страуструпа. Чтоб была нормальная работа с памятью. А арифметические операции добавить можно за 10 минут.
>>994244Ну, он милый, конечно, но как это поможет мне получить решение?А если речь про книгу, то не уверен, что я осилю это в столь сжатые сроки. Или там есть конкретно, хм, глава? Статья? в которой все проблемы решены?
>>994251>Или там есть конкретно, хм, глава?Я не знаю, я же не читал сам.Но похоже, что 17-я и 18-я.
>>994244ААААА!http://codepad.org/7cEMqbmpНу тут-то что? Вроде и функций никаких нет трогающих память, а всё равно дрянь какая-то выходит. При том матрицы, с которых я сегодня начал слизывать вектора, потому, что, очевидно, сам совсем бы проблемами не разобрался - работают прекрасноhttp://codepad.org/Jlh479m0
>>994251http://codepad.org/pgar8feS
>>994255cпасибо, Иисус. А что ты изменил?
>>994258На деструктор посмотри.
>>994254>http://codepad.org/7cEMqbmphttp://paste.ubuntu.com/24617287/
>>994259но... блять. Как так-то?Я думал "деструктор - функция которая вызывается в момент уничтожения объекта", которая нужна, собственно, чтоб очистить память. Разве не нужно там удалить эту штуку?А если не нужно, то почему в деструкторе матриц (см. выше) это делается и всё работает?
>>994262Он просто стебётся.Впрочем, можешь выпилить все delete и жить спокойно.
>>994263:(Настолько не могу в C, что не понимаю даже шуток про C. Делать-то что?И чем чревато если я, чисто случайно, действительно решу выпилить все делиты? Потерей памяти при каждом запуске?
>>994258Мне кажется, тут move asignment оператор по умолчанию включается, поэтому всё сыпется.Но я не смог чёт его добавить в этом редакторе каличном.
>>994269Если у тебя явно реализован деструктор, move costructor и move assignment не будут сгенерированы.
>>994251>Или там есть конкретно, хм, глава?>>994252Можно прямо с 18-й начать, в 17-й вода для полных нубов.
>>993446 (OP)потсоны помогите пжалста! Призываю всех топ программистов 10000килорублей/сек Короч есть 2стула 2 файла .cpp с основным говнокодом(класс + main) и .h заголовочный в котором прописана функция получения текущего времени... Как в .cpp файле в классе получить результат отработки файла-функции с временем?
>>994280>Как в .cpp файле в классе получить результат отработки файла-функции с временем?Вызови эту функцию.
>>994277>18-й начатьВыглядит не совсем так как мне представлялось. Это хоть та книга?>>994264Ещё разок обращу внимание на вопрос. И на "что делать", и на второй.
>>994254Ну ты калич. Зачем с макабы код копируешь?http://codepad.org/1eK6SvZt
>>994254>http://codepad.org/7cEMqbmpЛол. Я же сказал, что макака похерила доступ по индексу в copy(). И скинул скрином >>994206
>>994283>Выглядит не совсем так как мне представлялось. Это хоть та книга?Идёшь по ссылке в ОП-посте и качаешь "Программирование. Принципы и практика использования C++"
>>994287блё. Я подумал что ты про \t
>>994288действительно
>>994287всё. Работает. А теперь я пойду и всё же почитаю книжку. Потому, что про деструкторы я вообще ничего не понял (при их выпиле действительно всё налаживалось, но, как я понимаю, терялись те ячейки что эти векторы занимали).Спасибо
>>9942381. Делать этого каждый раз не нужно, если есть необходимость записывать данные сразу, делай это после всех необходимых записей, то есть когда необходимые данные будут заполнены, потому что частые вызовы снизят производительность, если ты будешь пихать данные маленькими объемами. 2. Можно проверять, бывает всякое.3. В стандарте никакой замены ему нету, и, в целом, эта хренотень не поддерживает бинарный формат данных, только текстовый, для сериализации, мягко говоря, годится едва ли, а на самом деле вообще бесполезна чуть менее, чем полностью4. Все, что позволяют выполнять файловые операции ядра ОС, все это поток и может, так что ответ на твой вопрос - ДА, но только не в случае, если ты открыл файл на append, тогда вся запись будет производиться в конец файла, как бы ты не старался перемещать указатель записи.5. Нихуя не понял. Ты делаешь ofstream::seekp, чтобы перейти в необходимое место, куда ты будешь записывать (указываешь направление и смещение) и потом проталкиваешь данные в поток. И все, в общем-то.
>>994293>Нихуя не понял. Имею в виду, если поток открыт с флагом std::out, то при записи он будет перезаписывать текущие данные файла. В таком случае, чтобы именно вставить, а не перезаписать данные, нужно считать в новый файл до необходимого места, потом вставить новые данные, а потом считать остальное?И еще вопрос появился: в c++ завезли OpenFileDialog кроме как варианта с MSDN: https://msdn.microsoft.com/en-us/library/bb776913(v=VS.85).aspx
Псаны, как правильно хранить set ссылок/указателей на объекты?
>>994262В 111 строке ты создаёшь временный объект, копируешь его и удаляешь память, указатель на которую остаётся в `a`.Ты будешь наступать на те же грабли всегда, когда ты будешь копировать вектор. Чтобы этого не было, сделай конструктор копирования или конструктор перемещения.Пока ты их не написал, они дефолтные - копируют значения слово в слово, включая указатели, новую память они не выделяют.В твоём коде Vector не может копироваться и перемещаться, поэтому писать надо по-другому:Vector a(n) - тут не создаётся временный объект.В строке 206 тоже временный объект.
>>994264>И чем чревато если я, чисто случайно, действительно решу выпилить все делиты? Потерей памяти при каждом запуске?1) Да.2) Кроме того, все копии созданного вектора будут использовать один и тот же указатель.
>>994321>Сделай консруктор копированияА это разве не он? Vector(const Vector& vect) {...}
Как называется код который не разделён на интерфейс и реализацию?
>>994324>>994321http://codepad.org/XyP1fsQ9Вроде тут, после того как тот анон исправил мою copy() нет ошибок. И делиты на своих местах. И, вроде, копирующий конструктор есть. А что там с "одним и тем же указателем" или временными объектами?
>>994327говнокод?
>>994325Он. Тогда я нихера не понял: ты, вроде, правильно копируешь с выделением второго блока.
>>994328Не обращай внимание, я просто твой код не читал, просто тыкнул пальцем в небо.
>>994281а как ее в классе вызвать?
>>994300Ну если каретка на начале файла, то да, он будет перезаписывать содержимое. Если ты хочешь стереть файл перед открытием, то используй опцию std::ios::trunc или как ее там. Если ты хочешь записывать поверх имеющихся данных, просто перемещаешь указатель записи при помощи seekp и все.
>>994338https://www.google.com/search?q=c%2B%2B+function+call+syntax
Как дебажить статическую библиотеку? У меня есть приложение, которое использует здоровую либу, и в ней при выполнении срабатывает какое то говно. Как это дело отдебажить? Где ставить точки остановки?
>>994417Отбой, нашёл.
Двач, я что-то не понял, культя что-ли сама при уничтожении виджета не отсоединяет сигналы от лямбд?
>>994505Наркоман чтоли?
>>994513ньюфаг штоле
>>994513Всё, что я выгуглил это вот: https://wiki.qt.io/New_Signal_Slot_Syntax (раздел Disconnecting in Qt5)> Only works if you connected with the symmetric call, with function pointers (Or you can also use 0 for wild card) In particular, does not work with static function, functors or lambda functions.>>994505 кун
>>994545Я немножко не понимаю твою проблему. Как ты решил, что соединение не рвётся? Как оно вообще может не рваться, если посылающий объект сдох? Точнее, кто посылает данные, если автор сдох?
Сап, плюсоводы. Как у вас с работой, удаленной работой, вкатыванием без профильной вышки (есть техническая из лютой шараги) и английским(которого я не знаю)? Есть ли смысл продолжать учить, если туповат (память плохая) или мне с плюсами ничего не светит и лучше не выебываться, а учить фронтенд?
Вместо одного char используют его массивы из-за того, что он только 8 бит хранить может?
>>994545Нихуя не понял вопрос. char'ы используют для паддингов, нарпример, сетевые структуры в linux'е так задефаны. Если ты используешь char для хранения переменной, то, как правило, компилятор будет выделять под него 4 байта, чтобы выравнивать память для быстрой выборки.
>>994711Нет, немного не правильно. Сдох объект со слотом, а объект, посылающий сигнал жив. В качестве слота выступала лямбда. Так вот после того, как объект сдох, этот слот всё равно вызывается. Сейчас я накидаю код.А как решил, что соединение не рвётся? Прога падает
>>994747Нихуя не понял. Нахуй ты мне про char'ы рассказываешь
>>994749Чтобы отсоединять сигнал при уничтожении объекта, в контексте которого работает лямбда, ты должен передать указатель на контекстный QObject в качестве третьего аргумента, а четвертым - лямбда функцию. И, в общем-то, все дела. Только смотри, чтобы время жизни захваченных объектов лямбда-функцией не истекло до смерти QObject. Короче, что-то вроде такого:QWidget firstWidget;QWodget secondWidget;QObject::connect(&firstWidget, &QWidget::signal, &secondWidget, []() { lambda_call(); });
>>994744 > >>994747
>>994747Я про те случаи, когда в char нужно хранить предложение. Например, я щас балуюсь, и чар не принимает в себя больше одного символа.
>>994753Блядь, действительно. В глаза ебусь, в доке всё написано. Спасибо, анон
>>994757Хм, если обьявить просто char A;То можешь сунуть туда только 1 символ, а если ужеchar A[1];То можно всунуть туда даже больше чем в мамку опа. я любя
>>994757char - это один символ одна буква. Если ты хочешь хранить много букв, но тебе нужен массив букв char'овВ чём проблема то?
>>994760Ну, я не знал немного.
>>993663>без формочек и юникода?>2017>без юникодаПрими мои соболезнования раз тебе приходится поддерживать легаси.В ином случае это диагноз.
Призываю мастера Qt на помощь. Есть очень странная проблема, в интернете нашёл только одну похожую проблему и то не решили. Есть на форме textBrowser, в него пихаю текст и ссылки ака окно чата. Ссылки так - ui->textBrowser->append("<a href="+url+">"+url+"</a>");Обычный текст вот так - ui->textBrowser->append("me# " + message + "\n");После открытия ссылки, тобиш после void Chat::on_textBrowser_anchorClicked - весь новый текст, который выводится в textBrowser - становится ссылками с юрл последнего нажатого. Диплом горит, помогите господа.
>>994743bump
>>994743На удаленке очень много веб-макак, на крестах заебешься искать работу, притом, что быстро найдется хуеплет, который у тебя уведет ее.Веб-макакой нати работу проще и ебаться про управление памятью, шаблонами и прочим говном не надо. Стоит лишь обмазаться фреймворками, однако, и в этой области свои особенности есть.>>994766Ты весь код покажи, тут борда с вангами или все еще со кольшиками, как-никак.
>>994792>> школьникамиблеать!
>>994792От кода толку тут мало будет. Потому-что в textBrowser текст отправляется коректно и без ссылок. Сам ебаный textBrowser что-то с текстом делает внутри себя. У него там есть какой-то общий объект для ссылок? И сущность ссылки цепляется к тексту? Я хуй его. https://pastebin.com/syxkiWNn
Как в VS компилировать код с минимальным размером кроме настроек пикрил?Какие директивы компилятора нужно использовать, чтобы переменная в в PE-файле была в секции кода, а не инициализированных констант?Можно ли встроить/переписать себе функции из WinAPI, чтобы не было привязки ко всяким Kernel32.dll, user32.dll, чтоб можно было просто вытащить секцию с кодом из исходного PE файла и вставить её целиком в другую и не ебаться с подгоном адресов функций, импортом и т.п.?
>>994798Пикрил, разумеется, забыл
>>993683>>993700Кьют слишком специфичен и своеобразен. Есть ли что-то ориентированное непосредственно на винду?Я могу прописывать обьявления окон для каждой кнопки, и даже готов писать свой фреймворк, но мне кажется что должно быть что-то несложное для винды типа эмбаркадеровского vcl или дотнетового фреймворка.
>>994803Именно поэтому С++ для настолок - полное дно.
>>994766Очевидный баг в Qt. Решение:1) другая версия Qt2) быстро накатай багрепорт3) накостыляй какой-нибудь тупое решение типа добавления избыточных </a> в конце каждой ссылки, если это поможет, или ещё что
>>994798Слишком много сложных вопросов.
>>994766Попробуй пока что в отдельное место выводить текст, потом с него уже загружаться. Заодно проще отладить будет, если что.
>>994809> потом с него уже загружатьсяЧто ты имеешь ввиду?
>>994796Хуй его знает, я сейчас чекнул я себя, под 5.8 все работает, или ты на говне мамонта 4.8 сидишь, а?!
>>9948124.2.1, не бей, лучше обоссы.
>>994813Это даже не легаси, это пиздец. Надо было тогда на Qt3 делать, если в жопу полез без мыла.
>>994812а нет, обосрался. Кинь прожэкт плс
>>994815http://rgho.st/7fBqZY4mlВиджеты Qt, которые не-QML, должны работать все без проблем, поскольку это дело уже отточено. Другое дело QML, ебал их маму.
http://ideone.com/cATtjTСкажите, почему мне всё таки пишет Welcome? Ведь объявление переменной B[2], и B[3] просто не может существовать. Или всё таки может? Если может, то зачем указывать размер массива?
>>994817Он у тебя любой текст в ссылку хуячит
>>994823Ну замени на что-то такое, хули ты как дурак https://pastebin.com/8hLuuTKm .Диплом уже блять на носу, а руки из жопы.
>>994825Почему решил кресты учить?
>>994803UWMWMСобрал в себе красоту WPF и мощь крестов (а также бонус: CLR сверху и win10 only, торопитесь, предложение ограничено)
>>994822-Wall -pedantic для GCC. Олсо, у тебя тут UB из-за того, что в двубайтный массив запихнётся больше двух байт.
>>994831Чё это за хрень? Даже гугл не знает.
>>994834Ну, по факту он трёхбайтный.
>>994835Да я еблан простоU W PWPhttps://msdn.microsoft.com/ru-ru/library/bb384843.aspx
>>994838Тьфу, не так понял. Думал, ты имеешь ввиду двухбитный.
>>994828В универе семестр на них микроконтроллеры программировали, и они мне больше понравились, чем ассемблер.
>>994840Опять наебал. Не та ссылка, ту потерял. Ну короче на XAML'е можно ебашить GUI для крестов. Инструкция была на MSDN, но я чё т проебал.
>>994843>чем ассемблерНу ясен хуй. Представляешь, в мире есть языки намного лучше, чем пропёрженные кресты.
>>994844Бля, нашёл. От онаhttps://docs.microsoft.com/ru-ru/windows/uwp/get-started/create-a-basic-windows-10-app-in-cpp
Тааак, падажжи ёбана. Это получается, что если я создаю массив M[2], то я могу обращаться к нему как к M[0] и M[1], но не как M[2]? Так, что ли?
>>994826Ну баг на месте
>>994847Массив с размером два, отсчёт идёт с нуля.
>>994847При объявлении массива в скобках ты указываешь размерность. Индексация начинается с нуля.
>>994849>>994850
>>994845Это то я уже понял. Но сейчас все равно не определился, в какую сторону двигаться. Т.е. понятно, конечно, что вкатиться легче всего через веб, но что-то как-то он совсем уныло выглядит. А по плюсам - читаю сейчас Страуструпа для чайников - и чем больше читаю, тем больше нравится. Я бы и дальше чиал и не замарачивался, но память подводит: буквально пару недель перерыв сделал, и все, открываю книгу где остановился - и нихрена не понимаю, все забылось. Вот и думаю - может нахер эти кресты.
>>994826Ну бля, если у тебя бага нет, версии qt одинаковые - то это совсем странно. Бинарники дай что-ли.
>>994852>нахер эти кресты.зарепортил
>>994852А ты какую нибудь конкретную задачу себе поставь для обучения.
>>994856Даже на ум не приходит, какую задачу можно было бы перед собой поставить: какую не придумаю - оказывается, что решить ее куда быстрее выйдет используя другой ЯП, даже если изучать его придется с нуля.
>>994859Что нибудь с ОС сделай
>>994859Вся суть крестов.
Что значит оператор "^" в следующем случаеString^ MergeSections
>>994921Это у мелкомягких такое.https://stackoverflow.com/questions/7530175/auto-foo-ref-new-foo-what-is-ref
>>994930Типа хурма для CLR из .net? Потом GC ее подберет или что?
>>994932Не знаю, что за хурма, но да, скидывает объект на сборщик мусора.
#include <iostream>#include <vector>#include <fstream>using namespace std;int main(){ ifstream f1; int key; cin>>key; char bf; if(key>0) f1.open("1.txt"); else f1.open("2.txt"); vector<char> vch; system("cls"); for(int l=1;!f1.eof(); l++){ f1.get(bf); char ii; ii=bf+key+key*l; vch.push_back(ii); } f1.close(); ofstream f2; f2.open("2.txt"); for(int y=0; y<vch.size()-1; y++){ f2<<vch[y]; } f2.close(); return 0;}Проблема - шифруется прекрасно, но при дешифровке(когда ввожу ключ меньше нуля) происходит внезапный выход из цикла, файл перестает читаться, хотя байты в нем еще есть. Какой-то байт зашифровался в байт, обзначающий конец файла? Что за хуйня? Памагити
>>994943#include <iostream>#include <vector>#include <fstream>using namespace std;int main(){ ifstream f1; int key; cin>>key; char bf; if(key>0) f1.open("1.txt"); else f1.open("2.txt"); vector<char> vch; system("cls"); for(int l=1;!f1.eof(); l++){ f1.get(bf); char ii; ii=bf+key+key*l; vch.push_back(ii); } f1.close(); ofstream f2; f2.open("2.txt"); for(int y=0; y<vch.size()-1; y++){ f2<<vch[y]; } f2.close(); return 0;}Проебался
>>994859Суть крестов. Так тебе нужно учить кресты или нет? Если надо - зачем ноешь?
>>994944Лень читать. Пройди по коду и обрати внимание на каждое место, в котором у тебя имеет значение знак, в котором знаковое значение присваивается беззнаковой переменной и т.д.Олсо, ideone.com
>>994766> Диплом горит, помогите господа. Что за диплом ты делаешь?Очередной чат?
>>995016Он самый, но с прямым подключением, шифрованием, ДХТ и ещё парой плюшек. Делаю то, чем сам буду пользоваться после написания. И в рот пусть ебутся все телеграмы и прочее.
>>995036Зачем тебе для всего этого кресты?мимокрокодил
>>995037Потому-что я угорел по qt, отличная штука. Хочу научится в нём кодить ака боженька.
>>995036Самому себе будешь писать сообщения?
>>995041Подколол так подколол.
>>995042Так это была такая шютка? Хих.
>>994766Костылями решил проблему. Теперь обычные строки буду писать - ui->textBrowser->append("<span>me# " + message + "</span>\n");
Можно ли при помощи std скопировать каждый N-ый элемент вектора?
>>995169Готовых способов нет. Вот пример с помощью copy_if и лямбды.
>>995169https://stackoverflow.com/questions/30817563/copy-every-other-element-using-standard-algorithms-downsampling
Почему крашится на некоторых файлах?
>>995298После удаления нужно прерывать итерацию. Итераторы, которые в for-each цикле использовались, становятся мусором.
>>995298Смотри пример использования erasehttp://en.cppreference.com/w/cpp/container/map/erase
>>995313>>995315Я недавно учить начал, поэтому не совсем понимаю. Я же удаляю элемент в самом конце итерации, т.е. это ни на что влиять не должно, разве нет? Почему на многих файлах оно работает вполне корректно?
>>995315В любом случае, спасибо за инфу.
>>995320У тебя с максимальным значением несколько ключей может быть. Первый ты удалишь, а вот дальше не понятно, что происходит.
>>995330Ну как-то же оно удаляет несколько ключей с максимальным значением перед тем, как крашнуться. Если в указателе рандомный мусор - то не понятно, как оно работает до момента краша.
>>995336В этом вся суть. Оно работает до какой-то магической черты, а потом падает.
>>995336Просто воспользуйся способом в статье - и всё будет робить.
>>995339Что-то оно ни сp = words.erase(p.first);ни с p = words.erase(p);вообще не компилится
>>995345Тебе ясно написали: воспользуйся способом в статье.R u retarded?
>>995346Я не хочу через сишное условие for делать.
>>995347So you are.
Почему майкрософтовый cmake думает что у него тулчейн версии 150, а на деле 141? А потом он еще и говорит, что библиотек буста нет.Что не так с этими майкрософтами?
>>995373Спермопроблемники — в /s/
Скоро меня пригласят в геймдев-фирму на собеседование. К чему следует подготовиться?
>>995417> К чему следует подготовиться?Что тебе под ноги полотенце кинут.
>>995417к работе забесплатно
Ухбля, гуру местные, подскажите что-нибудь из чтива, гайдов и любого дерьма, которое помогут разобраться с билдером чёртовым. Вообще интересует оче подробно расписанные гайды ибо сильно туплю при виде всех этих его графический инструментов.Ещё хотелось бы, узнать про создания на нём простых изображений.С меня нихуякак обычно
>>995746Какой это тебе нахуй билдер. Борланд что ли или как их там. Он же уебищный.Если ты нубас, выкачай QtCreator, будет гораздо проще, чем вот в этой хуйне.
>>995755Я бы это дерьмо даже не трогал, но вот препода моего это не колышет.
Юзаю CodeBlocks, все правильно делаю?
>>995345Давай я загугля за тебя, скотыняка.http://www.cplusplus.com/reference/map/map/erase/Что возвращает erase? А ты, сука, что делаешь?У типичного вопроса на собеседовании "нахуй нужен erase" - ты соснул. Поздравляю, ты даже не интерн, учитывая что тебе сказали, где ошибка.
Анон, поясни мне такую вещь.Я юзаю qt creator (только как иде). Там своя система сборки и свои файлы для проектов.Вот, например, я хочу исходники своего поделия выложить для всех.Как быть юзерам которые юзают другие иде и другие системы сборки?Ведь им придётся менять пути к либам на свои постоянно?А если юзается какая-то специфичная версия библиотеки?
>>995933https://stackoverflow.com/questions/39705210/c-how-to-manage-dependencies-use-libraries-from-github-for-example
Как так получается что мы используем конструктор шаблонного класса std::thread без передачи значений в сам шаблон? Я не понимаю...
>>996013> шаблонного класса std::thread
Мейлач. рассказывали, что можно написать многопользовательскоеприложение без тредов и форков. Это правда?Под многопользовательским подразумевается, что я могу запустить два пользователя и они будут работать параллельно, не мешая друг другу, но с возможностью изменять их общие данные.
>>996028Мейлач?
>>996028>но с возможностью изменять их общие данные. Алан Бьюли, «Изучаем SQL».Старательно изучаем!!!
>>996029С разморозкой. https://2ch.hk/abu/res/52038.html>>996028Разумеется, это возможно. Представь себе, что ты читаешь данные из stdin и используешь их, но только данные могут прилетать не из одной консоли, а из нескольких. Если в случае с одной косолью у тебя была одна структура на всю программу, то во втором случае у тебя будет массив структур для всех пользователей.
>>996028Хрен знает, про что тебе рассказывали. Про корутины, select/poll?
>>996028https://ru.wikipedia.org/wiki/Цикл_событийОдна из возможных реализаций такого приложения.
Ананасы, хочу, чтобы мой QWidget, помещённый в layout, был квадратным. Как это можно реализовать. Нагуглить не могу.
>>993446 (OP)Где можно почитать сжато про распределители памяти(allocator<T> вот это все).
>>996212Гуглил уже?
Нужна небольшая помощь в реализации класса ассоциативного массива. Он должен организовывать данные как бинарное дерево поиска, содержать операции вставки элемента, удаления элемента, поиска по ключуМного гуглил и ничего конкретного не нашел, некоторые предлагают в качестве примера брать реализацию красно-черного дерева, но там тоже не особо всё ясноВот это наиболее близкий вариант, как мне кажется https://www.codeproject.com/Articles/149879/Associative-Array-in-C
>>996227Что тебе не понятно?
>>996248насколько эта реализация соответствует моему заданию
>>996356Это вариант на массиве. Тут деревом поиска даже не пахнет.
Полистал я вашу шапку, решил Qt Creator поставить. При попытке создать простое консольное приложение пишет, что нет подходящих комплектов. Хотя MinGW стоит и в настройка дефолтного комплекта прописан. Я даже вручную через него скомпилировал минимальный код. А ide почему-то не может.Я не могу нагуглить как решить эту проблему. Всё что я нашёл, всё сводиться к предложению загрузить Qt полностью.
>>996370Не стоит эту IDE использовать для чего-то, кроме Qt. Она хуже любой другой распространённой.
>>996372Хорошо, понял, спасибо.Вот я в ужасе от этого, горит просто от крестов. Точнее как, сам язык мне очень нравиться, удобно с указателями всё, нет непонятных ограничений и прочего. Я с делфи начинал. Качаешь любую версию, качаешь любой пример, хоть десятилетней давности, запускаешь - и он сходу, сука, компилируется. А в с++ сколько не вкатывался в визуал студию - постоянно компиляторопроблемы. Загружаю пример, загружаю специально версию визуал студии под него (то есть уже даже не пример под версию, а версию под пример), открываю, а там 53 ошибки среди директив компилятора в каких-то *.h, которые в самой среде, вне примера. Я не знаю уже, говорят, мол с++ сложный, да пошли они к чёрту, там компиляторы сложнее языка в десять раз. Эклипс сейчас тоже вот ошибку выдаёт при попытке запустить хоть что-то.Может быть есть что-то типа pelles c, только для с++? Где компилятор вместе с ide весят 10 мб, и где можно нажать создать проект, запустить проект, и он запуститься сразу?
>>996370Короче, делаешь так: New Project -> Non-Qt Project -> Plain C++ app. Там выбираешь систему сборки Qbs. Сразу создастся обычный консольный Hello world и он будет нормально компилироваться.
>>996406Тоже так думал, пока не разобрался с ней более-менее. Единственное пока с чем не разобрался, как в ней пользоваться дебаггером, сколько пробовал нихера не получается.
>>996409Во, благодарю от все души. А я то почему-то упорно пытался комплект настроить, гуглил значения полей и что в них должно быть.>как в ней пользоваться дебаггеромДа пошёл он к чёрту, этот дебаггер. Я уже даже консолькой через батник и gcc готов собирать. Восемь часов пытаюсь этот мусор запустить. Я из армии только пришёл, идей куча накопилась, радовался, думаю, свободное время, сейчас поставлю какой-нибудь новый компилятор (сейчас же всплывают в разных областях такие новые проекты с открытыми исходниками), альтернативу визуал студии, где можно 100% времени уделить коду, а не только 60%. А то не сидеть же на своём умирающем делфи, да тормозном питоне. А тут вот. Ещё раз спасибо, прям настроение исправил.
>>996414Не за что. Кстати, сразу на будущее скажу, что по дефолту последние стандарты не включены. Чтобы включить с++14 нужно в qbs файле проекта написать cpp.cxxLanguageVersion: "c++14". Также если хочешь запускать отдельный экзешник без дополнительных библиотек, то нужно там же прописать cpp.linkerFlags: "-static"
ПЛАТИНОВЫЙ вопрос, но все жеЧто по идеи должен уметь джун? или хотя бы стажер или я настолько нулячий, что никуда вообще не возьмут :с
>>996427Гуглить.
Сап, анон. Пишет тебе крестовик-наверное-джун-наглости-на-мидла, работающий в унылом госучреждении и параллельно ебу труп науки в универе. Наткнулся на вакаху мечты - https://streamhpc.com/job/openclcuda-expert/. Собственно, занимаюсь я примерно тем, чем занимается эта контора - пишу код в соответствии с требованиями инженеров и физиков и параллелю на видеокарте, ну и ещё всякой хуйней по мелочи, но это неважно. Думаю попробовать прибиться к ним, но смущает пункт про то, что требуется опыт работы с архитектурами в количестве больше двух. Какие архитектуры имеются ввиду? Разные видеокарты? Плисы, ардуины и проч? RISC, CISC? Может быть, вопрос звучит глупо, но я дальше обычного комплюхтера с его цп и видеокартой не лез. Более того, я на самом деле хуёво разбираюсь в архитектуре э-вэ-эм, потому как в основном занимался алгоритмами, матаном, высокоуровневыми задачами, а по диплому вообще физик-теоретик, но думаю, смогу быстро подтянуть, если таки решусь к ним постучаться. Стоит ли вообще позориться перед белыми людьми с таким уровнем знаний?
>>996433Или тут вообще имеется в виду архитектура кода и я идиот, лел.
>>996417>то нужно там же прописать cpp.linkerFlags: "-static"Не помогает. Ексешник пустой программы начинает весить 2 мб, а при запуске жалуется на отсутствие "libgcc_s_dw2-1.dll".
>>996433>ON 5 MAY 2015ну да, спустя 2 года, вакансия, без сомнений, еще актуальна)
>>996469Думаю, это тот случай, когда набор идет постоянно, но не спеша, и с каждым кандидатом все обсуждается отдельно. Тем более что сайт они обновляют.
>>996446Хм, хуй знает, если честно. У меня все нормально. Посмотри в папке bin компилятора этот файл. Или скачай чистый mingw с офсайта и им пользуйся, но только юзай Qbs вместо qmake.
>>996539Вот я тоже. Сейчас поставил netbeams, требует то ли mingw, то ли cywgin, нечто make и другой мусор. Ставлю всё прям по инструкции ещё раз отдельно для него, а оно пишет, что всё-равно не хватает некоторой dll непонятно для чего. Поставил kdevelop, поставил geany, поставил CodeLite и всё одно и то же. Как люди вообще используют этот мусор - не представляю, самим то приятно с этим разбираться? Просто невообразимо выбешивает это, не передать словами. Почему вот по пунктам с офф-сайта скачиваю всё необходимое, а оно не работает, неужто так сложно поподробнее написать.Всё что необходимо, просто минимальную ide, текстовый редактор с поддержкой нескольких файлов и выделением ключевых слов в которой кнопки компилировать и запустить работают. Как pelles c на 10 мб (где даже отладчик есть, между прочим) - побаловаться-вкатиться в новые стандарты, ничего такого серьёзного не требуется. А тут скачай то, скачай пять утилит для компиляции, линковки, пропиши им все конфиги и получи непонятно что. Сейчас удалил вообще всё что стояло, пойду по второму кругу. Я уже даже почти готов громадную визуал студию поставить.
>>996576Чем тебя вижел студия не устраивает? Бесплатная, охуенный жырный инталлятор со всем на свете, огромный мсдн и не менее огромный стэковерфлоу. Притом, что большая часть энетрпрайза и геймдева как раз на студии, так что если учить, то ее.
>>996580> охуенный жырный инталлятор со всем на светеВот именно этим. Последний раз когда я её ставил, там она гигабайта четыре и я уже офигел от жизни. Какой-то пусть даже навороченный текстовый редактор запускается две минуты и компилирует с такой же скоростью. А то что сейчас я вообще боюсь представить сколько времени будет запускаться и как работать. Просто галочка для мобильных телефонов добавляет 10 Гб, может быть так принято сейчас, но я не вижу причин, куда там столько всего. Я в армии прям с андроида непонятно чем создавал apk за неимением лучших вариантов. Так соответствующее приложение занимает 27 мб. То есть фактически 27 мб достаточно для создание приложений под андроид (и даже если он использует что-то из самого себя, полный образ андроида 300 мб где-то). Хрен с ним, там ещё поддержка айфона и прочего, но не 10 же Гб?>А в с++ сколько не вкатывался в визуал студию - постоянно компиляторопроблемы. Загружаю пример, загружаю специально версию визуал студии под него (то есть уже даже не пример под версию, а версию под пример), открываю, а там 53 ошибки среди директив компилятора в каких-то *.h, которые в самой среде, вне примера.
>>996596Ну, во-первых, там допгалочки есть для охочих до места, тут просто ставит наверняка всё. Скоре всего сразу хуюнити и воображаемый паровоз.По-хорошему тебе наверное надо только шиндовс сдк и кресты а остальное доставлять по мере надобности.А че за ошибки у тебя с хедерами?Может ты тупо копипастил файлы проекта в инклюд и сорс, не указав их как пути инклюда и сорса? Это самое очевидное, системные либы студия уже сама пишет, если ты их ставил.Давай конкретику, все равно тред полудохлый.
>>996596>Просто галочка для мобильных телефонов добавляет 10 ГбТам кроме сдк для разных систем ещё 9гб мусора в виде десятка симуляторов разных версий систем для разных устройств, юнити и прочих.Что сдк иос, что офф. сдк андроида в полном составе весят по 4-6 гб.
Я знаю питон, Go. Думаю начал писать на спп. С чего мне начать?
>>996576Для твоих целей идеально подходит CodeBlocks. Только качай сразу с компилятором в комплекте. В ней все очень просто, даже настраивать ничего не надо, и даже может компилировать отдельные cpp файлы, а не только проекты, как студия, qtcreator и т.д. И сразу по дефолту включена статическая линковка, т.е. все компилируется без зависимостей от dll. Я вначале ее использовал, сейчас, правда, перешел на qtcreator. Хотя иногда и сейчас использую ее для дебаггера и компиляции статической библиотеки, т.к. пока не разобрался, как это сделать в qt.
Пишу приложение, работающее с sqlite. Мне нужно хранить в БД дату поступления на работу и иметь в классе поле для хранения этой даты. В каком формате хранить дату в классе?
>>996600>Давай конкретику, все равно тред полудохлый.Хорошо. Я поставил визуалстудию таки. Без совсем лишних галок примерно 4 Гб, хрен с ним. Запускаю, кликаю создать простую консольную программу. Нажимаю запустить, и оно выдаёт ошибку, не найден sdk версии 8.1. По клику изменить целевую платформу можно переключать win32 и win64, обе не работают. Если прописать в настройках версию 7 тоже не работает. Зачем мне этот sdk? В тех четырёх гб я тогда что скачал, если нельзя пустую программу скомпилировать? Я не собираюсь использовать возможности win8.1, даже возможности win7 не буду использовать, максимум создам окно, подключу древний opengl и буду обрабатывать нажатия мышки/клавы. Функции ос, которые, наверное, со времён win2000 не менялись.>>996617>CodeBlocksИдеально, есть даже версия не требующая установки, можно с собой таскать.
>>996576>>996580Студия как я понимаю сейчас работает на .NET, а использование Java/C# для разработки графических приложений известно к чему приводит. На C++ написаны только QtCreator и CodeBlocks.
>>996605С хеллоуворлда.>>996660Ты пишешь>Нажимаю запустить, и оно выдаёт ошибку, не найден sdk версии 8.1.Но почему-то потом ты пишешь>По клику изменить целевую платформу можно переключать win32 и win64, обе не работают. Если прописать в настройках версию 7 тоже не работает.Ставь шиндовс сдк раз хочешь под шинду девелопить.Покажи дерево проекта, кстати, если ты создавал Empty Project оно не должно хотеть сдк и должно собираться само.И поменяй язык, только уёбки кодят на русском.>>996663На плюсах можно самостоятельно на винапи хуярить, просто толковых готовых либов нет, проще самому нахерачить под ту утилитку что пишешь, либо стырить готовую большую либу.
>>996580>большая часть энетрпрайза и геймдева как раз на студии, так что если учить, то ее> учить IDE
>>996677Ну да. Это не борланд си, тут надо хоть пару раз ошпариться с настройками проекта, директивы препроцессора позыркать и подключать проекты в солюшен.Ты хочешь сказать, что это ОЧЕВИДНО и ПОНЯТНО без изучения?
>>996427Бумага ответу
>>996678Систему сборки настрой, маня. Нормальные люди уже давно перешли на внешние генераторы проектов (GYP, CMake и прочее говно), а не привязываются к какой-то конкретной IDE.Visual Studio нужна, чтобы на нее накрутить Visual Assist X или решарпер и послать нахуй интеллисенс, который окромя полутора подсказок для крестов выдать нихуя не может. Директивы препроцессора нужны, если ты особо упорот и уж очень хочешь себе натвикать хуйни, как какой-то аудиофил, в большинстве случаев, даже в нагруженных приложения, на многие директивы, за исключением директив на добавление служебной информации и оптимизации компилятора насрать абсолютно, потому что прирост производительности от них нулевой, если даже не отрицательный. Алсо, скажу тебе, про охуительное чувство, когда заголовочники и сорцы расположены в одной куче, но в проекте они по отдельным папочкам, и попробуй блять в репе найди что тебе нужно из этого дерьма. Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.>>996660>> Идеально, есть даже версия не требующая установки, можно с собой таскать.Говно ебаное, даже не пытайся пользоваться этим легаси чмом. IDE, которая не может выводить типы для auto и делать нормальные пометки об ошибках нужна была лет 17 назад (если ты не говнокодер ЦЭ99, подавайте мне бинды сюда, ко-ко-ко, нужно следить за легаси, стандарты вносят слишком много изменений, register выкинули, да как они смеют). Единственный плюс этого корыта в том, что парсит заголовочные файлы в поисках объявлений он достаточно быстро (ну а хули нет-то, если он ничего другого делать не умеет). Тут, наверно, будут советовать CodeLite и прочий мусор, который весит по питнадцоть мегобайт. Ты знаешь, что такое море крови ты наверное не купался в этом дерьме ты искупаешься тебе мало не покажется (цитаты Великих Людей)>>996656В timestamp переводи и храни как число. Благо 64-битная метка времени позволяет нам хранить наши говноподелки до времен терминаторов или может быть даже больше...
>>996433Бумп штоле
>>996683>Алсо, скажу тебе, про охуительное чувство, когда заголовочники и сорцы расположены в одной куче, но в проекте они по отдельным папочкам, и попробуй блять в репе найди что тебе нужно из этого дерьма. В чем проблема? Я сам их по папочкам раскладываю, но нередко дерьмо когда они на полу. Райтклик - открыть в эксплорере. В студию гит уже впендюрен, так что и коммитить можно из него.>>996683>Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.Это пичот, но у меня юникод. А на работе постоянно сталкивался с этой ебаниной.
>>996685>> В чем проблема? Я сам их по папочкам раскладываю, но нередко дерьмо когда они на полу. Райтклик - открыть в эксплорере. В студию гит уже впендюрен, так что и коммитить можно из него.Ну проще, конечно же, когда можно не прибегая к посторонним инструментам, сделать все как надо. Тысячи окон уже осточертели.Но соль в том, что даже при использовании двух IDE одновременно (открываю CLion и MSVS), я не могу получить адекватного редактирования кода (CLion в этом преуспел, зато автокомплит работает криво и куча раздражающих косяков, да и вообще пиздец бывает зачастую в большом проекте, но сейчас как-то этого поубавилось) вместе с хорошей производительностью и нормальной отладкой (отладка в студии хорошо, хотя были случаи, когда отладчик загибался и не хотел читать память, приходилось перезапускать всю студию, а студию с решарпером быстрой назвать язык не поворачивается). Короче, на двух стульях блять, как меня это доебало, если честно...
>>996687Студия за эти годы создала впечатление наиболее полноценного и качественного продукта.Экскод падал по три раза на дню, кодоблоки и прочие уже не такие полноценные.ВС Код показался хорошей быстрой легковесной альтернативой если пришьёшь к ней компилятор.
>>996690В целом, соглашусь с тобой. Я бы сейчас даже на CLion полностью перелез, дак он кривой падла (но гораздо лучше, чем пару лет назад, когда первые версии выходили)
>>996683>Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.> комментарии на русском
>>996690>ВС КодНе думаю что десктопные приложения на яваскрипте могут быть легковесными.
>>996694ИМХО лучше на русском, чем на кривом англицком. Видал я комменты, от которых ржать хотелось. Пускай человек выражается правильно, а не будет ограничен знаниями неродного языка. Комменты на том языке, который человек знает хорошо более выразительны, и должны объяснять сжато и в то же время точно принцип работы того или иного метода/куска кода.Алсо в принудительных английских комментариях смысла не особо много, если вся контора располагается в одной стране без зарубежных участников. Может, в коей-то мере, это и интересно, но больше будет походить на какой-то Брайтон-Бич, где все разговаривают на рунглише.
>>996695Однако ж.Я, конечно, его сравниваю с родным братухой атомом, платным саблаймом и добротным нп++.Щас немного попробовал вим и мне кажется, что тут что-то есть. Но пока нет времени навернуть (говорят емакс пижже). В коде плюгины одной кнопкой ставятся, тот же пуфон дебажить одно удовольствие.>>996696Толковый кодер комментариев не пишет, ибо что написано с трудом должно читаться с трудом.А кроме шуток - надо ангельский тянуть хотя бы в предметной области, а то напишешь контроллер панелей как painController и прочие перлы и комменты даже на русском не спасут.
>>996697Интерфейсы следует документировать, реализацию можно избавить от этого, в принципе. Если архитектура документируется, то от комментирования можно отказаться, да. Самодокументируемый код, это, конечно же, хорошо, но никто не подскажет без соответствующих подсказок, является ли метод блокирующим или нет, как он вызывается и чем отличается от подобного метода с интересным суффиксом.Английский нужно знать, не спорю, чтобы потом несуразиц не было, да и документация на те же API требует хотя бы средненьких знаний.
>>996701Ну хули, всё правильно сказал. Мы все знаем, как делать правильно, только реальность оказывается проворнее.
>>996683>Говно ебаное, даже не пытайся пользоваться этим легаси чмом. > IDE, которая не может выводить типы для auto Я пока даже не знаю что это, я с++11 только издали видел.>>996687>Короче, на двух стульях блять, как меня это доебало, если честно...А на люниксах есть решение, раз уж ты всё ругаешь? Мне то для себя, могу свободно обперекатываться.
написал односвязный список, хранящий статические данные - строчкипочему то функции стандартных библиотек tolower toupperне работают, поэтому не могу реализовать статический метод, который меняет регистр этих строк, программа нормально компилируется и всё работает, все условия проходят, но строчки не меняются, не могу понять почему, помогите плизhttps://pastebin.com/dwxgvqea
>>996781Эти статические данные у тебя часом не строковые литералы?
>>996781Во1 нужно явно присваивать: с = tolower(c)Во2 условия неправильные: нужно >=a && <=z
>>996446Кутэкреактор отличился этим - хуй ты запустишь скомпилрованный файл без деплоя на винде.Чтобы всё всегда запускалось, надо добавить в PATH все пути к динамическим библиотекам, которые ты используешь, в том числе путь к папке bin компилятора.
>>996576Как пользоваться codelite:- ставишь codelite- ставишь MinGW- в настройках указываешь путь к папке MinGW- добавляешь путь к папке bin в PATH (охренеть, там такая же проблема, как в креакторе)Всё, оно робит. В линуксе ьаких проблем нет, там все либы в заранее определённых местах.
>>996788ну да, а что?>>996791да, про присвоение я тупо забыл, спасибо
пытаюсь реализовать на плюсах простую сортировку пузырьком для элементов односвязного списка, которые хранят в себе строковые литералы (типо чтобы по алфавиту сортировало)https://pastebin.com/2xPXQkMKчет вроде должно работать, но не пашетанонче, нужна твоя помощь
>>996697>А кроме шуток - надо ангельский тянуть хотя бы в предметной области, а то напишешь контроллер панелей как painController и прочие перлы и комменты даже на русском не спасут.https://wandbox.org/permlink/747TNFxKBVkr9LN4
>>996876Ну и нахера ты это показываешь?Ты еще пропиши#define int целое#define { началои пиши на 1с.
>>996880https://wandbox.org/permlink/s7W2X3nng1rUktr3
>>996881Мсье знает толк в извращениях.
>>996883Это #импортозамещение
>>993446 (OP)Занимаюсь некой хуйнёй.Есть класс float3, имеющий float v[3];Есть класс Vec, имеющий float x, y, z;Возможно ли перегрузить оператор присваивания, чтобы эти 2 типа можно было друг другу присваивать?
>>996885класс КонтроллерПанелейНачало общее: Панель ПолучитьПанель(цел номер); Панель СоздатьПанель; Панель УдалитьПанель (цел номер); Панель ВыбратьПанель (цел номер); внутристроч цел ТекущПанель() Начало вернуть выбраннаяПанель; Конец; внутристроч СледПанель() Начало ВыбратьПанель(ТекущПанель++); Конец;... частное: стд::вектор<Панель> хран; цел выбраннаяПанель;Конец
>>996887Есть.>>996888А что, довольно мило.
>>996889>Есть.Что есть?Каким образом осуществить перегрузку?Я пробовал несколько вариантов, но компилятор жалуется на всякие ошибки типа missing type specifier и что-то ещё.
>>996890>>Есть.>Что есть?Возможность.
>>996890#include <iostream>using namespace std;class Vec;class float3{ public: float v[3]; void set(Vec in);};class Vec{ public: float x, y, z; void set(float3 in){x = in.v[0]; y = in.v[1]; z = in.v[2];}};void float3::set(Vec in) {v[0] = in.x; v[1] = in.y; v[2] = in.z;}int main() { Vec foo; foo.x = 1; foo.y = 2; foo.z = 3; float3 bar; bar.set(foo); std::cout<<bar.v[2]; return 0;}
>>996892Я примерно так и делал.Сейчас вроде разобрался, проблема походу была в циклических зависимостях файлов.
>>996894Разрулил вроде как.У меня эти структурки были в отдельных файлах.В начале файлов есть #pragma once ибо они во множестве других мест ещё подключаются.В одном из файлом (например float3.h) можно подключить второй (Vec.h), и там же реализовать конструктор и перегрузку из Vec в float3.В файле Vec.h просто в начале пишем "struct float3;", далее в классе/структуре можем объявить прототипы для конструктора и оператора=, и потом в каком-то другом файле написать реализацию этих методов (можно в том же float3.h после объявления структуры float3).
>>996899В хедерах реализацию писать моветон, пиши в плюсовом коде.Можно только мелкие инлайны типа метода-инкрементора.
>>996901>В хедерах реализацию писать моветонСкачай исходники boost или какой-нибудь реализации стандартной библиотеки и посчитай число строк в хедерах и не-хедерах.
>>996902Я сказал "моветон". Я себе такое обычно не позволяю.И нет, я не петух, а плюсер, на петухе я только небольшой скриптинг строк максимум на 500 делаю, посерьёзнее уже задача для плюсов.
>>996794Хм, я всё так и делал и не работало. При попытке запуска консольку выводит с сообщением, что программа завершила работу с ненулевым кодом. А сегодня я поставил MinGW в очередной раз, 64-битный, и всё заработало.И CLion заработал, к слову говоря.Значит, три с половиной работающих стула уже. Это, codeblocks и ещё половина qt-креатора, которая даже при статической линковке самостоятельный ексешник мне не соизволило собрать.Всем спасибо большое за наводки и советы - думаю пока этого пространства для плавания хватит, пойду тестировать последние обновы с++.
>>996709>> А на люниксах есть решение, раз уж ты всё ругаешь? Мне то для себя, могу свободно обперекатываться.Идеального решения НЕТ. Самое вменяемое по удобству и скорости работы, для меня во всяком случае, это CLion. Eclipse гораздо медленнее, к примеру, да и многих фич у него нет (а может и есть, я с этим уже года 3 не связывался). Недоредакторы, типо codeblocks, codelite, wxc++ (или как его там) и прочие, прочие (в т.ч. всякие редакторы типо atom, vscode и т.д.) это все не то. Рефакторинга нет (имеется в виду нормальный рефакторинг, с редактированием типов параметров, количества аргументов и прочим), вывода типов нормального нет, ошибок шаблонов нет и так далее до бесконечности.Можно попробовать QtCreator, но он, как по мне, кастрированный слишком, до нормальной IDE не дотягивает, но для новичка, я думаю, сойдет, особенно, если у тебя слабенькая пекарня (потому что все эти java-IDE жрут столько ресурсов, что пиздец...)
>>996887Да.
>>996901Два чаю этому.>>996902Аргумент инвалид, так как шаблоны не разносятся по файлам, а идут инлайном на крайняк выносятся за пределы класса в том же хедере. А теперь ты скачай какую-то не шаблонную либу и посмотри, сколько там реализаций в заголовочниках.
>>996982>так как шаблоны не разносятся по файлам,Очень даже разносятся. Обычно реализацию отделяют и выносят в отдельный хидер - делают .h и .hpp или .inc. В одном хидере необходимый минимум, во втором -тяжелая реализация, которую инклудят в .cpp при использовании.
>>997027Ок, но суть то осталась прежней - реализация все равно остаётся в хедерах.
Анон, у меня есть sqlite база данных с зарплатами сотрудников. Как в ООП-парадигме реализовать выборку данных из этой БД по идентификаторы сотрудника? Есть ли паттерны для решения такой задачи?
>>997032>реализация все равно остаётся в хедерах.Но в большинстве случаев этот хидер подключается в cpp и парсится только один раз.
>>997071> в ООП-парадигмеДелают ORM.
>>997104А без орм?
>>997071О блять, тысячи их. Начиная с активного объекта до маппинга (тот же ORM), можно еще шлюз таблицы данных или шлюза записи данных. Если тебе интересны паттерны взаимодействия с базой данных, можешь прочитать Patterns of Enterprise Application Architecture (паттерны корпоративных приложений в переводе), книги что на русском, что на англицком есть в доступе. Ссылок не будет.
>>997107Без ORM получится не ООП.
Можно ли таким способом как-то инициализировать myFloat1,2,3? В таком виде не работаетvoid ini(float myFloats){ myFloats[0] = new float(1.0f); myFloats[1] = new float(2.0f); myFloats[2] = new float(3.0f);}int main(){ float myFloat1 = nullptr; float myFloat2 = nullptr; float myFloat3 = nullptr; float myFloats[] = { myFloat1, myFloat2, myFloat3 }; ini(myFloats);}
>>997218цы, ты зачем переменной nullptr присваиваешь. ты либо делай float myFloat1=nullptr;...float myFloats[] = {myFloat1,...либо float myFloat1, myFloat2,......void ini(float myFloats[]){myFloats[0]=1.0f;...а еще лучше почитай про указатели.
>>997219ну ебаный по голове, разметка всё испортила.float ~myFloat1=nullptr;...float ~myFloats[] = {myFloat1,...либо float myFloat1, myFloat2,......void ini(float myFloats[]){myFloats[0]=1.0f;...где ~ - оператор указателя (звездочка).
>>997219Не знаю как тут вставить код, но в общем вот скрин
>>997220>void ini(float myFloats[])myFloats[] должен же быть типа массив указателей, а не просто массив флоатов, ну в общем даже если так, то все равно не работает, я скрин выше приложил
>>997222не компилируется или что?
>>997225Компилится, просто делает не то что я хочу, я хочу таким образом иницилизировать переменные myFloat1,2,3 но они так и остаются nullptr, зато если посмотреть потом содержимое myFloats то вот там как раз и создались эти 3 переменные
>>997229Сударь, вы к нам с мира Джавы приехали?
>>997229тогда попробуй сделать myFloat1,2,3 переменными, а массив так и оставляешь двойным указателем и не трогаешь функцию. массив инициализируешь его как &myFloat1, &myFloat2 и тд
>>997232Вот так не получится, ибо в действительности у меня там не флоаты будут а указатели на объекты абстрактных классов, т.е. переменными не получится их сделать
>>997236гошподи. почему указатели хранишь в флоатах? почему не можешь просто создать указатели абстрактных классов?
>>997238просто со стороны выглядит так, как будто ты пытаешься срать через ноздрю. ты в образовательных целях это делаешь или считаешь, что это единственно верное архитектурное решение?
Не смог ничего нагуглить. Есть же явно какие-то инструменты в библиотеке string для того, чтобы разделить строку по разделителям. Например из "Плюсы не самый плохой язык"Можно было вытащить сначала Плюсы, потом не, а потом самый и тд.Я вот знаю только find() substr(), но тогда нужно буферную строку делать и вообще не красиво получается.
>>997241И то и то наверное, ну я хочу так инициализировать нужные мне переменные объединив их в массив и передав в функцию, ну раз по-другому нельзя значит буду потом доставать их из массива и приравнивать вручную.
>>997245>Плюсы не самый плохой язык>Нет встроенного типа-строки>В стандартную либу для строк не завезли .split()
>>997245Нету ничего, братишка.>>997246Попробуй в своём коде, там где инициализируешь {&myfloat1, ... }, тогда 3 звезды будет, в функции-инициализации нужно тоже поправить.
>>997248Да я хотел через массив указателей, 3 звезды не оч хочется делать
>>997248>>997247А ну и ладно, не очень то и хотелось. Сам напишу, может даже класс бахну. в портфолионапишу, что имею собственную библиотеку.
>>996369тогда в какую сторону двигаться? как-то идей нет
>>997266Начни с изучения дерева поиска.
>>997218Хуйню какую-то написал, потому и не работает.
wtf?
>>997397Microsoft Visual C++ RedistributableНаписано же
Кто кодит с линуксов? Какие подводные? Думаю перекатиться на минт какой-нибудь. но слышал, что с библиотеками под пингввинов все плохо, хотя много инфы нарыть не удалось. Поясните
>>997441Провокация срача незаметна.> ПояснитеЗа щёку пояснил тебе.
>>997441Какие билиотеки тебя интересуют, не msvcrt ли?
>>997397Это библиотеки Visual C++ разных версий и битностей. У меня примерно такая же пачка на ЖД, ставлю во избежание сюрпризов, не во всех программах явно написано, что ставить.
>>997462Слышал, тот же conio не дружит с линуксом.
>>993446 (OP)Почему везде (ладно не везде, но много где) пишут, что обучение программированию лучше начинать с C++ ?
>>997480Везде пишут, что с поц-кала.Впочем, и те, и те — больные на тугодумку.
>>997475>> conio>> линуксомШкольный учитель по информатике 60 лвл плес
>>997475>conio>2k17В голос обдристался.
>>997397Наслаждайся своей спермопарашей.
В моём регионе одна вакансия по запросу С/С++Зато WEB и 1C хоть жопой жуй.Ума не хватает, чтобы работать на себя. Фрилансу это нахуй не надо кроме студентов с лабамиУже смазал лыжи в ДС2.Пасаны, кому нужны кресты в 2017, кроме ынтерпрайз говна?
>>997507В крупных конторах типа яндекса, мейла, дохуя нужны. Но если ты чмо, писавшее только laba1.cpp, туда будет почти нереально попасть, а если и попадешь - будешь работать сверх нормы и за копейки. Там макакам платят не особо много, якобы престиж от надписи "Yandex" в трудовой это компенсирует.
>>997509Это понятно, чтобы попасть в топы нужен неплохой math-background. Я то макачу уже давно и всё забыл. Есть вариант в Unity-геймдев вкатиться, но там своя атмосфера.
>>997512Вкатись в системное или сетевое программирование, будешь потом с десятком флагов возле сокета плясать и еполлы трахать.
>>997484Почему? Разве изучение С++ не дает какого-то собого понимания программирования? Почему тогда советуют?
>>997524> Разве изучение С++ не дает какого-то собого понимания программирования?Ты про "выучил сипласплас — счетай выучил все языки"?
>>997525Наверно. Я же не знаю почему его советуют. Типа чем сложнее язык, тем проще потом перекатиться.
>>997528Он скорее просто растягивает очко. Перекатится потом правда легче — всё кажется слишком маленьким для твоего расхуяренного очка, если это конечно не хачкели.
>>997534А если начинать с хачкеля, то что тогда?
>>997562Тогда будешь колесить по дорогам Вальхаллы.
А это, даже стыдно за такой вопрос, как не создавать консоль вообще при запуске программы? Не скрыть её сразу после запуска, а вообще не показывать, что бы даже не мигала.
>>997534А для чего в современном мире вообще используется С++?
>>997598Что угодно, где нужен перформанс. Попробуй пораскинуть мозгами.
>>997588Создавай win32 приложения. Аналог на линупсах не знаю.>>997598Всякая системная, сетевая, околонизкоуровневая хрень, где не хочется писать с нуля на С, а хочется использовать современный язык с современным синтаксисом и кучей либ на все случаи жизни.
>>997616> кучей либ на все случаи жизниНу это ты конечно слегка напиздел
>>997623Он про современный язык напиздел, а про либы — это правда.
>>997633>>997623Ну епта, из языков с такими возможностями для системного/низкоуровнего программирования и различными либами, у крестов лучший синтаксис. В общем то, мне кроме крестов и голого С ничё на ум не приходит. Ну разве что ассемблер, но на нем что нибудь прикладное крупное писать - это ояебу пристрелите меня.
>>997616На линупсах консоль никогда не показывается просто так. В винде она показывается потому, что программы вызывают WriteConsole вместо printf, в позиксах такой поебени нет (либо она исчезающе редка).>>997635>В общем то, мне кроме крестов и голого С ничё на ум не приходит.Питон, Перл.
>>997588Спермоблядь незаметна. Где ещё есть такие искусственные проблемы?
>>996663>а использование Java/C# для разработки графических приложений известно к чему приводит. К чему приводит? В чем подвох? А то вот вкатываюсь и понимаю, что на C# охренеть как проще гуй заделать, причем не надо под 100 мб библиотек таскать с приложениемКстати, статическая линковнка на Qt требует лицензии (по хорошему). Т.е. сделать-то ты можешь, но распространять нет.
>>997715>Питон, Перл.Ты про пхп и жаваскрипт забыл - топовые языки для системного и низкоуровневого программирования.
Почаны, поясните за сертификаты, кто-нибудь получал, есть ли в них профит? Где можно попроходить тесты и посмотреть примерные задания, которые выдают для получении сертификата?Я какое-то время по нужде быдлокодил (на работе заставили выучить если это можно назвать словом "выучить" кресты и писать на них несложные MFC приложения), а сейчас решил взяться за голову и научиться писать нормальный код, за последний год немного подтянул синтаксис, упорядочил знание ООП, конечно, гуру С++ все равно назовут это быдлокодом, но я готов совершенствоваться и дальше. Теперь хочу попробовать получить какой-нибудь сертификат. Поможет ли это при устройстве на работу? Спрашиваю, потому что читал разные мнения вплоть до того, что сертификаты только хуже делают при трудоустройстве.
>>997863Двачую этого, тоже интересно
>>997799Дотнет уже занимает пару гигов на диске. Виртуальная машина медленно интерпретирует байткод, количество ненужных выделений памяти и кастов типов растёт экспотенциально со сложностью программы, сборщик мусора может полностью заморозить гуй в любой момент. В результате получаем 50% потерю производительности у конечного пользователя только ради того чтобы быдлокодерам было проще шлёпать Form1_Click. Это приемлемо для энтерпрайзных систем на серверах, но графические приложения должны быть исключительно нативными.
>>997799В том что это говнище будет работать с таким скрипом, с каким твои, блеять, родители делали тебя, сука, гомункула.Попробуй на торренте найти ту же 2010 или 2008-ю студию — последние нативные версии. И сравни их с последней, 2017. При том, что она работает куда лучше той же 15-й, оно всё ещё лагает на любом железе хуже жидеи (у той хоть есть честная несколькоминутная индексация, во время которой не поработаешь, а вот у студии такое говно перманентно).
>>997917О, не знал что студия 2017 не нативная. А я то думал хули она так лагает блять.Выходит VS2017 написали на C#? пиздос. Зашквар уровня IDE от JetBrains на джаве
>>997480Обучение программированию лучше начинать с С. С++ язык слишком сложный и уже для опытных программистов. Вкатываться в него не имеет смысла.А вот С более прост, при этом мощь языка так и прет как и в С++.
Никуда вы не денетесь от прогресса. Гуй на JS/C# — это объективная реальность.Objective C тоже был в своё время тормозным гогном, но ничего, макоблядь писали.
>>997921>мощь языка так и претЕсли не сказать, что ПРОТЕКАЕТ
>>997926УТЕКАЕТ
>>997925>Гуй на JS/C# — это объективная реальность.>JS>J>SТы ебанутый? Я БЛЯТЬ ХУЕЮ. Люди хотят писать программы на языках которых не существует физически. Ты понимаешь что твоего JS кроме браузера нигде нет? Взять тот же Node.js, это обычная С программа которая выполняет код написанный с синтаксисом JS. А теперь представь громоздкость среды которая должна будет целый GUI создавать подобным методом. Нахуй эти костыли нужны, когда уже есть QT/GTK для белых людей или те же Windows Forms/WPF для C#?Какому мудаку придет на ум писать на яваскрипте ебучий гуи?
>>997928Ты сам понял, что написал?
>>997936Да. Уже есть managed решение в виде C# отработанного годами для GUI. Для JS нет нихуя кроме небольшой ноды. JS как языка кроме браузера нигде не существует.Если так хочется писать менеджед гуи, каким мудаком надо быть чтоб писать на чем то кроме .NET?
>>997937Ипать довен. VSCode, Atom и ещё миллиарды десктопных приложений на JS.
>>997939Говно написанное через анальные костыли и анальные врапперы над врапперами.Поссал тебе на ебало, смузихлеб
GUI можно писать только на WinAPI.Кто не согласен - нахуй из профессии.
>>997942Ты можешь бомбить сколько тебе угодно, но это объективная реальность.
>>997939>AtomЛагает при большом количестве открытых файлов/большом объеме кода. Особенно я почувствовал разницу, когда с атома на phpstorm пересел. Просто как с жигулей в ауди.
>>997945Долго и муторно
>>997863Нету сертификатов, потому что всем похуй. Сертификаты появляются, когда язык начинают немеренно форсить, тот же C#, к примеру.Я не знаю, какие ты там собрался по крестам сертификаты получать, но я бы туда только шаблонов и запихивал, чтобы на десять тысяч проходило парочку человек (я бы не прошел). Самое лучшее, что ты можешь сделать, так это написать свою какую-нибудь либу или еще что. Сделай на бич-хабе реп и по-маленьку запушивай туда новинки своих творений, через пол-года увидишь, что все, что ты делал - говно.
>>997969У меня вообще эта идея с сертификатами появилась, когда возник вопрос, а как вообще определяют подойдет ли кандидат на должность программиста или нет. Ведь кроме стажа по сути сейчас ничего не просят. Допустим, у меня 10 лет стажа, я в это время в том числе и кодил, но как это проверить? Сертификат может дать хоть какой-то срез, хотя, понимаю, что от быдлокодерства это все равно не защитит.Впрочем не суть, я все же решил просто попроходить различные тесты и понял что пока никуда не гожусь, т.к. местами не понимаю основ. В следующем посте по этому поводу у меня будет вопрос.
>>997989Ну какого-нибудь Сеньора Помидора посадят рядышком, он будет слушать, что за хуйню ты несешь. Если будешь пиздеть, то точно объебешься. Если контора хуевая, то отправят к ХаРэ (ЭйчАр, как они любят себя называть), бывают такие, что там королева бензоколонки сидит, которая отсеивает в две кучи и, как следствие, без должного надсмотра в саму же контору попадают лютые объебосы, которые могут только промеж булок шурудить своим волосатым языком.Стаж, это тоже понятие такое, я бы за стаж, конечно, не цеплялся. Но, однако, как минимум год нормального программирования у тебя должен быть за плечами и вот этот год ты постоянно должен заполнять свою головешку полезной информацией и по итогу неплохо было бы посмотреть, что поменялось за год. Я думаю, если ты будешь каждый месяц инспектировать и анализировать свои предыдущие работы и постепенно набивать хоть на чем-нибудь руку, то там понятно станет что и как. Например, тебе станет очевидно, какие ты решения принимал, насколько они подходили или нет в конкретных ситуациях. Все-таки это тоже опыт.Был тут до меня один человек, который работал года 4. Стаж, по сути, 4 года, а в коде, ну полная хуйня творилась. Человек применял паттерны налево и направо, делал какую-то хуйню там, где это не надо было и (sic!) будо охуительно лицезреть что-то вроде такого:>> QMap<...,...> m_map;>> ...>> if (m_map.contains(key)) { return m_map[key]; }Блять. Человек 4 года в сраном Qt просидел и даже не осилил контейнеры. Он все хвастался, что постоянно подключает новейшие сборки Qt, но самое веселое было то, что он использовал legacy-подход к работе, который был еще в 4 версии. То есть вместо кошерных ныне соединений при помощи указателей на функции и лямбд, как тут уже не раз обсуждалось, он цеплял все через SIGNAL(...) и SLOT(...). Про охуительную реализацию PIMPL на классы с тремя интовыми полями я вообще молчу.Вот эти тесты, стаж, сертификаты какие-то, по-мне, честное слово, хуйня полнейшая. Нужно уметь применять навыки а не давить количеством якобы знаний и сертификатов.
>>997989а вот и вопрос.Нужно определить что выдаст этот код:Ответ: ddcccddЯ пытался в нем разобраться, отнумеровал (1-11) строки, в которых может быть какой-то вывод и затем для лучшего понимания начал сам себе объяснять каким образом получился этот ответ. И в некоторых местах я не понимаю почему и так и прошу объяснить.1-3. как мне кажется у меня не возникает вопросов. В 1 и 2 выделяется память в стэке и запускает обычный конструктор. В 3 пункте на основе уже имеющейся переменной методом копирования создается новая переменная в стэке.4. Вызвал у меня легкое непонимание в совокупности с 5 и 6. Почему в 4 при создании ссылки и присвоении ей значения другой переменной (я так понимаю ссылка теперь будет указывать на стэк, в котором хранится переменная с) никакой конструктор не вызывается. 5-6. При этом, если переменная объявляется и тут же инициализируется значением другой переменной того же типа, то задействуется конструктор копирования (пункт 5), но при этом, если переменная была объявлена заранее и ей присваивается значение другой переменной, то никаких конструкторов не задействуется (пункт 6) 7. При создании указателя выделяется память в хипе размером с переменную типа А, немного сбивает А(с). Возникает вопрос, при этом в эту память записывается что-то?8. Разница с предыдущим в том, что передается ссылка. И вот тут у меня самый большой вопрос. Ссылка указывает на стэк, а указателю нужен хип, верно? В этой строке работает конструктор копирования, но я не понимаю почему.9. со статик кастами я плохо знаком, так что тут у меня ни ответов ни вопросов.10. вопросов не вызывает11. Функция принимает 2 параметра по ссылке. В первый параметр передается цифра, и вот тут я снова не понимаю почему работает обычный конструктор, а не копирования. Второй параметр выглядит понятнее, и, как я подумал, там тот же механизм, что и в пункте 3, но нет, тоже обычный конструктор.Кто-нибудь сможет объяснить, пожалуйста, где я не прав и ответить на вопросы.
>>997998Ещё год назад я делал лабы на QT5, про новый синтаксис вообще ничего не слышал в то время. В официальных доках всё было по-старому.Ничего удивительного, что чувак про него не знал.
Пишу программы для расчета зарплаты сотрудников. Расчет основан на стаже работы, количестве подчиненных и верхнем пределе надбавки. Стаж и количество подчиненных используются с коэффициентами.Есть абстрактный класс для сотрудников worker.От worker наследован head - абстрактный класс для всех сотрудников, которые могут иметь подчиненных.employee : worker не может иметь подчиненных.manager : head и sales : head могут иметь подчиненных.Функция расчета зарплаты определена в worker виртуальной. В head определена вспомогательная функция расчета зараплаты с учетом числа подчиненных и поле std::set подчиненных.Я хочу избавиться от дублирования кода, потому что функция расчета везде почти одна и та же, она в employee и она же в manager и sales отличается только тем, использует ли она число подчиненных.Можно сделать ее общей для всех и в классе employee число подчиненных использовать с коэффициентом 0.Как это лучше реализовать? Для этой функции нужен set подчиненных, а определять его в worker как поле я не хочу, потому что worker - общий класс, и не все сотрудники могут иметь подчиненных.
>>997998>>> QMap<...,...> m_map;>>> ...>>> if (m_map.contains(key)) { return m_map[key]; }Ошибка не очевидна без контекста. Например: обрабатывается поток данных, и на каждом шаге пары могут быть вставлены и исключены, и если ключа нет, то может возвращаться какое-то "пустое" значение (не обязательно default-constructed).Если тип функции - референс, то уже смешнее, конечно.
>>998020В противном случае он возвращал объект по-умолчанию, если мне память не изменяет. Значения он только вставлял. Если мне память не изменяет, это было что-то вроде кэша уже использованных данных или как это можно назвать.>>998006Этому синтаксису уже несколько лет
Почему в VS2015 отваливается дебаг? Breakpoint'ы не срабатывают, код выполняется. Запускаю в режиме отладки, гугл не помогает.
>>998036всё, неактуально. это я д
>>998022Если это мемоизация, как ты написал, то в чем проблема в приведенном участке? Так же и делается.
>>998053Нахуя искать дважды?!
Почему код с 1.png в rezultAddress заносит 0x0100AA00 а не 0x0040AA00?
>>998053Короче, фиксю по-быстрому. Уже нихуя не помню, если до репа завтра доберусь выложу это чудо.
>>998055Потому что результат сложения числа с указателем - это указатель + sizeof(тип)*число
>>997954Никто не говорит, что не лагает. Да, это жрёт память и ЦП. Но зато быстро (а значит и дёшево) и удобно (наверное, я сам не пробывал).
>>997998>>> QMap<...,...> m_map;>>> ...>>> if (m_map.contains(key)) { return m_map[key]; }>Блять. Человек 4 года в сраном Qt просидел и даже не осилил контейнеры.Ну или ты не осилил.
>>998074Жёстко ты его.
>>998054Потому что для типов, которые не имеют "дэфолтных" значений это единственный вариант.По мне так это предложение к обсуждению и улучшению, а не пиздец ошибка. Можно в optional значение завернуть например. Придираешься ты.
Тамплиеры, помогите. Хочу вызвать LoadLibraryA по адресу в виртуальной памяти, при этом адрес я хочу получить сам, основываясь на данных таблицы импорта скомпилированного PE файла и ImageBase, который я получаю через FindImageBase(). Я скомпилировал приложение (код 1.png), вытащил из получившегося PE RVA функции LoadLibraryA. Как я понял, это RVA, в который будет записан VA той самой функции, но тем не менее получаемый адрес отличается от того, что я получаю по auto x = LoadLibraryA. ЧЯДНТ?
>>998114Ну ебать, картинки как обычно забыл.
>>998114Зачем делать именно так? Конкретно по вопросу ничем не помогу, это уже даже не байтоёбство, а какой-то изврат.
Есть темплейт, представляющий собой mutex-ограниченное std::queue<unique_ptr<T>> с паблик Push, Pop и is_Empty.Понадибилось в другом классе иметь референсы на хранимые объекты.Можно ли в одном темплейте объединить возможность работы как с unique_ptr<T>, так и с &T или вообще с <T> напрямую? Или городить отдельный темплейт для этого?Заставлять его хранить shared_ptr<T> тоже не хочу, потому что многие классы пользуются этой же очередью для хранения и уникальных объектов тоже.
>>998119Это подготовительные меры. Мне главное понять, как основываясь на ImageBase и RVA в таблице импорта получить VA, по которому можно вызвать LoadLibraryA. Разумеется, в реальном приложении всё будет несколько иначе.
>>998121Ну так что тебе мешает получить из unique_ptr ссылку на объект?
>>998131unique_ptr на объекты хранятся в map другого класса (выше по иерархии), он же управляет временем их жизни.Дочернему классу он их передает для обработки (временно), гарантируя, что они никуда не исчезнут и не будут удалены до конца обработки. Дочерний класс их не хранит, соответственно передавать shared_ptr смысла нет. При этом передает он их через "реалтаймовую" очередь, для которой и создан темплейт.Изначально в проекте использовались только очереди с unique_ptr и проблем не было. Теперь понадобилось использовать тот же класс "живой очереди" для любых объектов или референсов на них и вопрос в том, можно ли универсализировать темплейт.
>>998136В голову пришло только декларить все необходимые queue в твоём классе, а потом использовать нужные, оверлоадя все Pop и Push, либо указывая в конструкторе варинт использования.
>>998136Хочешь сделать контейнер для любых типов?Ну можешь хранить всё добро в виде объектов одного базового класса на всех, вроде как так можно делать.Я не знаю, почему, но мне кажется, что тебе может помочь паттерн Visitor.
>>998145Технически, он и так работает для базовых типов, но способы передачи объектов и указателей отличаются, а значит тело функции должно понимать, что перед ней, и вызывать соответствующие методы (std::move для unique_ptr, прямая передача для &Object).Сами объекты мне там хранить не нужно вообще никогда, либо умные указатели, либо референсы.
>>998146Мне кажется, тебе реально тут Visitor может помочь.
Вот, если лагает последняя студия, то какую поставить? Слышал, что более старые вменяемые. Какие именно, и где их достать?
>>998149Вот же тебе писали -> >>997917
>>998154Хорошо, спасибо
>>997920Чот хуево. Я сейчас на 2015, некоторых фич с++17 уже не хватает.
>>998163Так не вышел ещё стандарт.
>>998164Радыю по этой штукеhttp://en.cppreference.com/w/cpp/utility/optional
>>998165Так там же он вроде есть в experimental, не?Даже если нет — возьми из буста/фолли/кути или что ты там юзаешь (да да, привыкай тащить в проект кучу говна руками, это очень жизненный опыт шиндовс-программера).
Либо напиши свой опшен, там 20 строк кода.
>>998176Оно-то да, но в стандарте приятнее.
>>998123пиздуй в с-тред
>>998121>>998146Используй std::move для всех проходящих мимо объектов.
Есть такая проблемаhttps://gist.github.com/tjarrow/d9b447cc48c663a7343b0bd7601b831eЭто цифровая сортировка по 16-чной записипочему-то упорно не хочет работать с количеством элементов, меньше чем 10дебажил долго и упорно - так и не разобралсяподскажите, где ошибка
>>998220>почему-то упорно не хочет работатьКогда к доктору приходишь, тоже говоришь "нога упорно не хочет ходить"?
>>998220Ты это сам написал? Подозреваю, что нет. Падает, потому массив хранит разряды чисел. В стандартном 32-битном целом их как раз 10.
>>998225ты про mas_col ? он же вроде и хранит 10 разрядов
>>998232>mas_col = new int[10]; //Здесь падает>почему-то упорно не хочет работать с количеством элементов, меньше чем 10Слющай, ну я и подумал, что когда 9 тут ставишь, программа умирает. Мол, что за глупые вопросы.
>>998220http://ideone.com/e2OFVpЧЯДНТ?http://ideone.com/xDoUjw - scanf("%x",...) читает в unsigned int, а не int.
>>998238>http://www.cplusplus.com/reference/cstdio/scanf/>x>Unsigned argument
>>998238ничего не понял. проблема в scanf ?
Обращаюсь к знатокамЕсть некоторый фрагмент кода, который считает строки в файле хз, есть ли функция для этих целей в стандартных библиотеках, суть не в этомПочему когда я вставил этот же фрагмент в другую прогу все переменные забрал, библиотеки подключил цикл начал зацикливаться, хотя в той, другой проге, все работает идеально?
>>998252Обращаюсь к знатокамЕсть некоторые педали, который вращает колеса хз, может другие вели сразу с педалями, суть не в этомПочему когда я вставил эти педали в другой велик все тросики забрал, колёса подключил рама начала зацикливаться, хотя на том, другом велике, нормально ездил?
>>998255яснокакой язык, такие и обезьяны
>>998256С таким вопросом тебе бы в любом треде по ебалу дали.
>>998257о дибилты знаешь что через интернет в ебало дать невозможно?
>>998261То-то ты до сих пор кровоподтёки потираешь.
>>998074Ох ты блять, ну спасибо. Вопрос повторяется. Нахуя искать дважды?!Про второй пример со значением по-умолчанию, я уже сказал, что нужно было делать так или через .find и проверкой итератора (первое проще). >>998053Оказалось, я бугуртил даже не из-за этого, он просто пихал все в контейнер и не использовал его вообще. Видело как рудимент, получается. Наверно, да, не такой уж и сильный косяк.
Годная реализация шифрования des(triple des) у кого-нибудь есть?Кажется, что уже сто вариаций переробовал, все дают разные результаты шифрования с ключом. И при этом ни один не дает правильного. За правильность взял то, что дает большинство бесплатных сприптов в онлайне, найденных по запросу в гугле "des encode online".Интересует именно обособленная реализация, а не часть большой библиотеки, которую придется тащить с исполняемым файлом.
>>998406В каком режиме нужно?
>>998415ECBСамый простой.
>>998419На сисярпе вроде писал DES в ECB. Щас завтрак приготовлю и гляну, если в шарпе поковыряться не брезгуешь..
VS2017, если что. Что мне с этим делать? Где достать эти библиотеки?
>>998406Охуительный критерий правильности.Тесткейсы botan проходят на этом онлайн декодере - http://des.online-domain-tools.com/Тесткейсы (в hex-формате): https://github.com/randombit/botan/blob/master/src/tests/data/block/des.vecКод несильно зависит от остальных компонент ботана, они нужны только для унификации интерфейсов - https://github.com/randombit/botan/blob/master/src/lib/block/des/des.cppМожно пересобрать библиотеку, отключив всё лишнее - https://github.com/randombit/botan/blob/master/src/lib/block/block_cipher.cpp
>>998421Давай, интересно.>>998437Гляну, окей.
>>998444А я тебя наебал, нет у меня DES. У меня ближайшее к DES это AES и Magma только.
что читать что смотреть что бы устроиться c++ программистом? какие технологии изучать
>>998473C++-программистом разве работают? Я думал, что это язык для программисткого хобби.
>>998474а разве не работают? так что там надо уметь что бы взяли на работу
>>998475STL, Boost, опционально Qt, матан, алгебра, физика, геометрия, теория чисел, криптография
>>998478stl и boost полостью? а из матана физики геометрии что вообще может пригодиться?
>>998479Ответ на оба вопроса: смотря на что ты претендуешь и куда идёшь устраиваться. Проблема крестов в плане трудоустройства в том, что их уже не используют повсеместно. Заводы автоматизируют на С/машинном коде/асме, энтерпрайз на джаве/C#, web под asp.net/php. Остаются всякие нефтяные/геологические компании, где шарп/джава не подходит по производительности, а C/asm/op-code не подходит из за сложности разработки. Ну gamedev сюда можно приплести, в том же UE пишут на крестах да и юнити вроде можно заставить их жрать, браузеры, короче долгостроящиеся приложения, обрабатывающие большой сетевой трафик и/или системные функции. Вообще, мне кажется, что в разработке большого приложения голых плюсов будет недостаточно, и придется обращаться к сторонним библиотекам, ибо без них ты работаешь уже не над приложением, а над созданием собственного велосипеда для крестов, грубо говоря, создаешь себе инструмент, а не инструментом создаёшь продукт. Поэтому, КМК, stl может и нахуй шлют, а boost/Qt их аналоги используют активно, поэтому не лишним будет хотя бы скачать и посмотреть чё в них есть.
>>998485ну вообще я бы хотел просто работать над каким нибудь десктоп приложением, но так походу не получиться, тот же на пример скайп, мб браузер ну и тд, что можешь посоветовать, яп сменить мб, или технологии под c++ подходящие под это
>>998485>stl может и нахуй шлютПоясни ньюфагу почему очень многие пишут, что stl - говно и вообще не нужен? Хотя сам Страуструп вроде пишет, что лучше использовать стандартную библиотеку, чем писать свои велосипеды.
>>998542Какой язык, такая и стандартная библиотека.
Какие есть аналоги для громоздкого switch, например, если я разбираю пришедшие сетвые пакеты и по ключу определяю, что делать с данными?
>>998547Ключи представляют собой упорядоченные числа и по ключу вызывается функция из массива функций? И неважно сколько разных ключей, на быстродействии это уже никак не скажется.
>>998547ЕМНИП, даже в крестах есть хэш-таблицы и лямбды.
>>998547https://en.wikipedia.org/wiki/State_pattern
>>998561Не вижу, как ему этот паттерн поможет.
>>988927>Подсветка илитная. У нее название есть?
>>998542В STL есть алгоритмы и много довольно полезной дичи, но контейнеры имеют не совсем удобный интерфейс. Это понятно, что комитет пытается облегчить библиотеку как только можно и сделать ее эффективнее, но от этого страдает функционал и принятие мелочей занимает очень долгое время, потому что нахуя иметь встроенный поиск в std::map с возможностью возврата значения по-умолчанию, если элемент не найден, если можно взять std::map::find и потом сравнить std::map::end.НО:Я до сих пор не могу понять, почему комитет еще не принял методы по изменению порядка следования байт, чтобы переводить всякую дичь без помощи htons/ntohs и т.д. Почему нет потоков для работы с бинарными, именно бинарными, а не текстовыми данными, как QDataStream, например и приходится пользоваться boost-ами или cereal, к примеру (хоспаде, благослови создателя последнего, потому что это охуенно).Почему нет рефлексии времени компиляции, ведь это, к слову, не такая уж и непосильная задача для компилятора, который во время работы уже имеет на руках синтаксические деревья. Где sting_view или какая-нибудь подобная дичь. Почему создателям стандарта понадобилось около 20 лет, чтобы понять, что неплохо бы иметь метод std::string::data, который возвращал бы указатель на НЕКОНСТАНТНЫЕ данные.ВСЕ ПРИНИМАЕТСЯ ОЧЕНЬ МЕДЛЕННО. Кажется, будто бы в комитете сидят ебаные хипстеры, помешанные на создании каких-то ненужных выебонов в языке, вместо того, чтобы требовать наличия хорошей библиотеки.
>>998612>потому что нахуя иметь встроенный поиск в std::map с возможностью возврата значения по-умолчанию, если элемент не найден, если можно взять std::map::find и потом сравнить std::map::end.operator[]
>>998625Он вставляет элемент, если его нет. А тут подразумевается случай, когда вставлять отсутствующий элемент ненужно.
>>998537>посоветоватьсмотря сколько тебе лет, есть ли стабильный доход, чем до этого занимался
>>998612> Почему нет потоков для работы с бинарными, именно бинарными, а не текстовыми даннымиhttp://en.cppreference.com/w/cpp/io/basic_istream/read
>>998612> нахуя иметь встроенный поиск в std::map с возможностью возврата значения по-умолчанию, если элемент не найденДля того, чтобы не бросать исключение из []
>>998719Это риторический вопрос был. Со знаками препинания у меня проблемы, вот тут то я и обосрался. Но, в общем, ты понял мою идею. И даже не в эксепшене дело, хотя он мог бы и тут вывалиться в зависимости от того, поддерживает ли тип исключительно копирование (как правило, move-семантака не кидает исключений, я такого не встречал). Это просто удобно.
Ананасы, где лучше вставлять Doxygen`овскую документацию: в хидере или в *.cpp?
>>998726>хотя он мог бы и тут вывалиться в зависимости от того, поддерживает ли тип исключительно копированиеЗачем для создания несуществующего значения копирование?
Можно ли вызвать метод класса в отдельном потоке из другого метода этого же класса, без использования static?
>>998888змейку небось пишешь?
>>998890Нет.
>>998888Я потратил немало времени, и нашёл способ только костыль использовать. При создании треда через WinAPI точно ты ему передаёшь параметр в виде void*. Я в качестве аргумента использовал this, а функцию вообще вынес за класс.
>>998815У контейнеров Qt есть метод .value, который возвращает значение по-умолчанию в случае отсутствия записи в контейнере. Семантика передачи значения по-умолчанию там копирующая, поэтому будет вызван копирующий конструктор или присваивание. Если бы был метод с семантикой передачи rvalue-значения по-умолчанию, тогда, при наличии перемещающего конструктора или/и присваивания, при передаче временного объекта вызывался бы этот метод.>>998717Сырое я могу и через c-функции написать, только стало ли удобнее сереализовать целый объект при помощи метода write. Я так не думаю. Классов для работы с исключительно бинарными данными нет.
>>998888Кто тебе запретит?
>>998888Это ты?
>>998423Переустанови виндовс. Виндовс сама не переустановится. Переуставнови её сейчас. Переустанови её ещё раз. Поставь раком и опять переустанови.
>>998901Знаете, что такое лямбда-функция?! Прекрасное расширение языка. Аллах акбар!В void он кастует, ну как-же. А потом, поди dynamic_cast-ом получаешь указатель на нужный объект.
https://pastebin.com/FjFEtd42Ломается после надписи сломайся здесь. Как это вообще возможно? Down это массив указателей на тот же тип, что и сам Tree_node_source.Valgrind выдает в следующей строке Conditional jump or move depends on uninitialised value(s)Н = 1 в момент поломки. Хотя до этого н = 0 не было равно. Но во многих местах такая же конструкция с фор и все работает.Как думаете, в чем может быть дело?
>>998971Ой, нет, ошибка. Это размер вектора(кстати, это вектор, а не массив) = 1.
>>998972>вектора DownФикс еще один
>>998910Нет.Я вообще редко вопросы задаю, и обычно нахожу в гугле, а если не нахожу, то спрашиваю в /pr.
>>998920>Знаете, что такое лямбда-функция?!Расскажи.
>>998920reinterpret_cast
Слышал, что большие куски кода лучше выносить за рамки блока if, оставляя в нем лишь возврат в случае ошибки. типа не if (b==a){//500 строк кода}else return false;а if (b!=a)return false;//500 строк кодаЭто как то связано с особенностями компиляции или просто делается ради повышения читаемости кода?
>>999104Для повышения читаемости. return early pattern
https://pastebin.com/pfEukDRn назвать Tree.hhttps://pastebin.com/eZMj2bqB файл с классом, назвать User.cpphttps://pastebin.com/ie3JY8z9 main-файл, я назвал Server.cppЭто своебразная база данных. Все происходит в классе User. На вход подается команда (на вход в смысле явно прописывается в main), парсится, а затем выполняется. База данных имеет структуру дерева иерархии. То есть есть напримерРоссия Правительство Путин.Здесь записью является только путин. У каждой структуры Tree_node( вершина дерева) есть пометка IsAHum_ которая показывает запись это или точка в дереве иерархии. Вектор Down в структуре это вектор со ссылками. map Work это набор данных, который должен быть только у записей. То есть у Путина есть, а у Правительства нет.Теперь о проблеме.По отдельности команда SELECT и PRINT работают. SELECT каждый раз ищет в резульате предыдущего поиска (SELECTа). Изначально за результат предыдущего поиска берется все дерево. Причем поиск производится по дереву иероархии. То есть можно выбрать все записи, которые входят в правительство по запросу:SELECT ПравительствоОбходом дерева получаются ссылки на все вершины дерева предыдущего поиска, имя которых равно поисковому запросу, после чего эти ссылки помещаются в вектор Down специального экземпляра структуры Tree_node Buf_, который является свойством класса User.То есть происходит следующееhttps://pastebin.com/M71AXcH7Программа падает, когда мы пытаемся сделать PRINT после поиска, а именно в момент обхода вершины дерева Top_, а именно его вектора со ссылками Down.То есть если попросить напечатать содержимое Top_ до поиска, то все будет ок, такк как там просто копия всего дерева, но если выполнить селект, а уже потом попытаться вывести все, то в файле User.cpp после строки 52, программа упадет. Не могу понять в чем дело.https://pastebin.com/iduBst2c Файл с базой. Назвать Base.txt
>>998249Проблемы вообще нет, оно работает.Проблема в сканф проявится только с большими числами.
>>998888Запросто, только снихронизацию не забудь сделать.
Смотрю, уже гет скоро будет. Кто решил брать?
>>999286Предлагаю нового маскота
2ch, я не могу понять, почему в char массив помещается русская C строка (char a[] = "Строка";) при кодировке UTF8? Проверяю каждый символ в массиве, он продолжает весить 1 байт, хотя исходя из UTF8 он должен весить 2 байта, в чём дело? Для этого же вроде нужен wchar_t, разве нет?
>>999282Это понятно.Спасибо.
В чём разница между reinterpret_cast<T>(value) и просто (T)value?
>>999457>reinterpret_castТем, что так не надо делать, например
>>999463Чому? Натыкался на мнение, что сишный каст ололо небезопасный и его аналогом является reinterpret_cast<T>()
Меня тут ругают за использование realloc. А в чём собственно говоря проблема? Выделять новый кусок и туда копировать каждый раз через new/delete? - Зачем?Что-то я побродил по сети, никакой аргументации не нашёл. Наоборот что-то про люниксы и хорошее быстродействие realloc, ну и не советуют одновременно new /malloc использовать.
>>999469Сишный каст - это не реинтерпрет каст, это примерно static_cast. reinterpret_cast - это смена типа без смены содержимого. Он должен использоваться только в платформозависимом коде для грязных трюков.http://en.cppreference.com/w/cpp/language/explicit_castДальше сам гугли.>>999474Проблема только в том, что перевыделенная память может иметь другой адрес со всеми вытекающими.
>>999483Как будто через new/delete адрес не может измениться. Глупости, значит.
>>999172Бамп вопросу, третий день сижу, не могу понять что происходит.
>>999421Это магия.
>>999529Так и знал что для двачедаунов компьютер это не более чем магическая коробка.
>>999510Выложи архивом, лень качать отдельно и переименовывать.
>>999543Если знал, то что спрашиваешь тут?
>>999421Где ты тут utf8 видишь?
>>999547Да, вот тар.http://dropmefiles.com/049fT
Такой вопрос.После инжекта в процесс своей библиотеки и получения адреса функции, когда повесил хук на функцию, я могу вызвать в хуке оригинальную функцию, или будет вызвана уже хукнутая функция? Значит ли это, что нужно описать заранее оригинальную функцию и уже в хуке использовать её?
>>999605Обычно в теле функции, которой передается обработка, сначала вызывается оригинальная функция, а потом твои добавки в неё.
>>999622А, понял, все нормально значит.
Читаю книжку из шапки ("Принципы и практика использования C++") и по мере прочтения накапливаются вопросы, на которые книга не даёт. Я их тут буду задавать партиями или сначала дочитать и попробовать всё до последней главы?
>>999642Задавай
Аноны, нужна ваша помощь. Решил я запилить игруху в консольке, типа файтинг.Пока что только познаю ООП и у меня возникла проблема. Мой друган, который шарит в C#, рассказал мне, что в С++ можно делать переопределение функции.Итак, у меня есть один базовый класс Player, в котором есть функция Attack() {}, а также есть два производных класса Knight и Wizard. У этих производных классов тоже есть функция Attack, в которой выводится пока что просто сообщение о том, что они таки нанесли урон. Вобщем нужно сделать так, чтобы в зависимости от созданного класса игрока (рыцарь или маг), вызывался нужный производный класс класса Player. То есть я создаю объект класса Player, но связанный с определенным производным классом, затем вызывается функция Battle для нужного производного класса. И если я выбрал рыцаря, то выводится сообщение для рыцаря, и так же для мага.
>>999554>>999172Анончики, ну че, не понятно что там не так?
>>999776http://www.cplusplus.com/doc/tutorial/polymorphism/
>>999805Можешь вкратце объяснить? Просто мой ингриш не настолько крут, чтобы статейки специализированные читать
>>999776>создаю объект класса Player, но связанный с определенным производным классом, затем вызывается функция Battle для нужного производного класса. И если я выбрал рыцаря, то выводится сообщение для рыцаря, и так же для мага.Ты или делаешь два разных класса наследованные от игрока с разными функциями, или если ты хочешь именно один класс с разными в зависимости от инициализации функциями, то включи в свой класс ещё одно поле-подкласс или указатель на функцию, которой и будут различаться твои player-объекты после инициализации.
>>999803Это пиздец, а не код.
>>999816Сорри, я пока только учуссь, скажи что не так, перепишу получше. Алсо есть более чистая версия без отладочных выводов.
>>999817Начнём с того, что ты сохраняешь в вектор адреса локальных переменных.User::Select(Tree_node Top_node_source, string Rule){...Buf_.Down.insert(Buf_.Down.end(), &Top_node_source);...}Дальше разгребать скучно.
>>999820Ага, ну да, ошибка, странно что прога падает именно тут, но сейчас попробую поправить.алсо подскажи, как писать лучше?
>>999808Код после Virtual members.Лучше бы ты с жабы начал. Без системы в крестах можно мозг сломать.
>>999809>>999830Все, разобрался, спасибо. Ну там конечно и синтаксис с этими ебучими указателями. Ваще не представляю, как мне их понять
>>999843Ищи информацию, в интернете на русском всё есть. Не пытайся понять сам.
Я знаю, что вам похуй, но и мне похуй на то, что вам похуй.Написал я тут дипломчик, описываю прогу разработанную, а из глаз кровища льётся. Это такой пиздец, что его людям показывать стыдно. Жуть, просто жуть
>>999487Поздравляю, теперь тебе нужно не только уметь создавать/удалять объект, но ещё и уметь ресайзить его. И объекты бывают посложнее, чем массивы чаров.>>999843Тебе будет понятнее, если сказать тебея, что указатель - это то же самое, что адрес? И чло сложение числа с указателем - это указатель, сдвинутый на это число позиций относиттельно его типа? Что там понимать-то?
Двач, эта сука меня заебала. Хочу считать бинарный файл в char, но внезапно, ебучий ifstream отказывается читать после первого нулевого байта, несмотря на то, что я явно указываю размер который определен верно через тот же ifstream в ifstream.read(). Разумеется там есть нулевые байты, это же кусок .exe файла. Короче, как мне полностью запихать в char содержимое бинарного файла, а не до 1 нуля? Там предлагают шаманские методы через string, но звучит и пахнет как костыль.
>>999895Открой файл в с флагом binary, перейди в конец файла, узнай позицию, вернись в начало файла, выдели память, считай файл через read. Вроде должно работать.
>>999821Что-то я устал от назойливых новых ньюфагов.
>>996619 (OP)Вопрос с++ господам.Есть задача про уравнение двух чисел джвумя заранее заданными операциями(Если это возможно). Как уравнять пару, еще более-менее понятно, но как определить неуравниваемую пару чисел?Код здесь http://ideone.com/e9J0WGУсловие здесь:Результатом применения операции 1 к паре натуральных чисел (a, b) является пара натуральных чисел (a+1, 2×b). Результатом применения операции 2 к паре натуральных чисел (a, b) является пара натуральных чисел (2×a, b+1).Требуется за как можно меньшее число шагов с помощью операций 1 и 2 получить из пары (X, Y) пару равных чисел.Результат записать как последовательность из единиц и двоек. Если "уравнять" данную пару невозможно, вывести 0.
>>9996481.В книжке показали классы и сказали несколько интересных слов, я не мог не заинтересоваться и даже забил бы на них до главы про классы, но в результате экспериментов получил ненароком такое. Картинка. То есть я беру указатель на класс, выделяю под него память и явно вызываю конструктор (Хрен его знает как там это правильно сделать, написать q->my(); оно мне не позволяет, да и может быть конструкция q=my() уже сама по себе выделит память (хотя в этом случае я достиг падения программы, в отличие от способа с malloc), я пока с этим не разбирался и разберусь потом. Суть в другом.). И потом в коде обращаюсь к массиву в классе. Только вот судя по консоли у меня деструктор вызывается раньше этого обращения. Какого чёрта он там вызывается?2.Если в самом начале я напишу просто my q;, то всё работает корректно, деструктор вызывается после моего обращения.Возникает вопрос, а как тогда объявить переменную-класс не вызывая конструктор вообще? По запросу "Как не вызывать неявно конструктор по умолчанию при объявлении класса?" ничего найти не могу. Вот я просто хочу объявить класс - то есть иметь переменную с нужными мне полями и вручную с ними работать внутри функции не вызывая конструктор вообще - как мне это сделать?3. В си структуры были. Я слышал, что в с++ теперь можно методы в структурах делать, так и оказалось. Предположил что структуры тем и отличаются, что у них конструктор не будет вызываться. Ан нет, абсолютно аналогично работает. В чём тогда различие структур и классов ныне? Тоже не могу нигде найти.
>>1000065Первая картинка: my() - это конструирование временного объекта. Оператор = вызывает либо move constructor (если стандарт 11+. Деструктор не вызывается) либо copy constructor (похоже на твой случай). Память освобождается, в *q остаётся неправильный указатель, ты разъебошил ногу.Если ты хочешь присваивать объекты с указателями, тебе нужно сбацать правильный copy constructor и move constructor.>Возникает вопрос, а как тогда объявить переменную-класс не вызывая конструктор вообще? Ты пытаешься выстрелить себе в ногу. Если ты хочешь, чтобы при создании переменной ничего не происходило, просто объяви пустой конструктор (или оставь дефолтный). RAII, парень.3. Структуры отличаются только тем, что в них все члены public.
Олсо, дефолтные конструкторы перемещения и копирования определяются компилятором не всегда.http://en.cppreference.com/w/cpp/language/move_constructorhttp://ru.cppreference.com/w/cpp/language/move_constructorhttp://en.cppreference.com/w/cpp/language/copy_constructorhttp://ru.cppreference.com/w/cpp/language/copy_constructor
>>1000099>>1000101Понятно, спасибо.>RAIIА удобно на самом деле, пусть не совсем очевидно.
>>10000651. malloc только выделяет память указанного размера, но не вызывает конструктор, если хочешь пердолинга, то делай placement new, например: http://ideone.com/wdHEjlА лучше всего делать стандартными средствами при помощи new и delete, а еще лучше использовать умные указатели. 2. То, как ты это назвал, это называется выделение в "статической" области памяти, то есть по-факту структура описания самого объекта размещается в стеке, если же твой класс содержит поля, которые создаются в куче, то они будут созданы в куче, как бы ты этого не хотел. При выходе из области видимости переменной, размещенной в стеке, для нее вызывается деструктор, причем в порядке, обратном их декларации. То есть, например:>> {>> my a;>> my b;>> ...>> }Сначала будет вызван деструктор для b, затем для a. Это вполне логично.Если ты создал объект в куче (при помощи new, например), тогда деструктор для фактического объекта вызван не будет, вызван будет (если это вообще вызовом можно назвать, по факту, просто указатель стека сместится или данные перезатрутся в зависимости от контекста) деструктор для переменной-указателя, а не на то, что она указывает. То есть в следующем случае:>> my *a = new a();Ты имеешь две сущности. Первая - переменная a, которая является указателем на объект в куче. вторая - непосредственно объект a в куче. При выходе a из области видимости будет вызван деструктор именно для ПЕРЕМЕННОЙ-УКАЗАТЕЛЯ, а НЕ для ОБЪЕКТА. Поэтому, если ты не передал куда-то указатель для дальнейшего использования или не вызвал delete вручную, тогда, поздравляю, ты проебал память.3. Различие структур между c и c++ состоит в том, что в обычном c кроме членов-данных ничего в структуру затолкать нельзя. В лучшем случае, если ты захочешь сотворить подобие какого-то класса, тебе будет создать члены-данные, являющимися указателями на соответствующие функции. Получится своеобразный виртуальный класс. На деле так делают изредка и просто прибегают к созданию заковыристых имен для функций на все случаи жизни. Алсо в цэ ты можешь при инициализации структуры указывать названия заполняемых полей явно, например:>> struct my_struct s = { .param_a = 1, .param_b = "char str" ... };В крестах такую хуйню не провернешь уже, потому что, как говорят старики из комитета, нахуя вам такой синтаксис, если родина дала конструкторы. В крестах же отличие структуры от класса минимально и заключается лишь тем, что по-умолчанию в структуре все члены открытые (являются public), в то время, как в классе они по-умолчанию private. Деструктор, конструктор, если они не объявлены, генерируются автоматически, как, впрочем, и некоторые другие конструкторы и присваивания (но там есть множество исключений).Алсо при объявлении шаблонов ты можешь использовать только ключевое слово class или typename, хотя это никакого отношения к структурам, фактически, и не имеет.
Дроч, почему каждый раз программа отрабатывает вплоть до return в main() без нареканий, а потом тут же хуйня пикрелейтед?
>>1000168всё, нашел. это я чедух, удалял указатель, для которого не выделена память.
Есть ли объяснение TSP https://en.wikipedia.org/wiki/Travelling_salesman_problem для крестов по русски? Мне туго в англ.
>>1000203А не не. Уже нашел
Переменная это проименованная область памяти, у меня вопрос, где хранится имя самой переменной и где хранится адрес к которому привязана переменная?
>>1000216>где хранится имя самой переменнойНигде. После компиляции имя переменной не имеет смысла. Если язык интерпретируемый, то это уже по его усмотрению в какой-нибудь хеш-таблице, скорее всего.
>>1000216>де хранится имя самой переменнойВ компиляторе.>где хранится адрес к которому привязана переменная? В коде программы.
Какой же code::block убогий. Зачем вообще за него сел.
>>1000216>Переменная это проименованная область памятиЭто тебе училка по информатике сказала?
Второй вариант через ссылку - наиболее короткий способ сделать сие извращение?
В универе стоит люто настроенный компилятор, который не хочет пропускать функцию stoi.<string> подключен, он просто требует, чтобы было объявление этой функции. Что нужно сделать, чтобы прога скомпилировалась.
>>1000327using namespace std;
>>1000353Как изменить максимальное значение для RAND_MAX? Мне нужно увеличить потолок, получаемый через rand(). Простой #define RAND_MAX 0xFFFFFFFF даст нужный результат?
Как запилить двухмерный динамический массив?
>>1000357Ты можешь в заголовочном файле библиотеки поменять. Но никаких гарантий, что что-то поменяется или rand после этого будет работать стабильно.Если компилятор поддерживает C++11, то попробуй это.http://ru.cppreference.com/w/cpp/numeric/random/uniform_int_distribution
>>1000363https://stackoverflow.com/questions/1403150/how-do-you-dynamically-allocate-a-matrix
>>1000370Спасибо
>>1000353Прописано было.мимо_автор_оригинального поста
#include <iostream>#include <cmath>using namespace std;int main(){ setlocale(LC_ALL, "Russian"); int ptrx = NULL, ptry = NULL; int bdxy = NULL; //int x[100]; Ненужное //int y[100]; //int rsg[100]; int n, i, rst, grr; cout<<"Сколько пунктов "<<endl; cin>> n; ptrx= new int[n]; ptry= new int[n]; bdxy= new int*[n]; for(i=0; i<n; i++){ bdxy= new int[n]; } for(i=1; i<=n; i++){ cin>> ptrx >> ptry; } for(i=0; i<=n; i++){ for(grr=1; grr<=n; grr++){ rst = abs(ptrx[grr]-ptrx)+abs(ptry[grr]-ptry); cout<< i <<" и "<< grr <<" равно "<< rst <<endl; bdxy[grr] = rst; } rst = abs(ptrx[i+1]-ptrx)+abs(ptry[i+1]-ptry); } cout<<endl; for (i=0; i<n; i++){ for(int j=0; j<n; j++){; cout<<" "<<bdxy[j]; } cout<<endl; } delete []ptrx; delete []ptry; for(int count=0; count<2; count++){ delete []bdxy[count]; } return 0;}Закрывает программу не окончив её. Это задача коммивояжёра, только там даются координаты и формула для расчета расстояние между городами по координатам. В чем ошибка?
>>1000382Этот функционал появился в версии C++11. Адекватного способа добавить это в отсталый компилятор нет.
>>1000380 -> >>1000387>>1000382Залей куда-нибудь код (ideone), может кто-нибудь захочет покопаться.
>>1000388Я уже решил. Там наверно mingw ебнулся и не принимал <= в цикле, для ввода в матрицу значений.
>>1000387То есть нужно либо самому в код добавить такую функцию?
>>1000327Так, СТОП. Тебе не <string> нужен, а <cstring>
>>1000314Гугли про strict aliasing
>>1000411Подключено.
Как реализовать норамльный поиск?
>>1000465Реализации и алгоритмы есть в интернете. В общем случае это какая-то разновидность перебора, т.к. задача коммивояжера - NP-трудная.
Программач, не могу осилить это говно. Вроде C++ тред как раз для этого подойдет.Так вот, какие-то сабпроекты - вообще охуеть, сам синтаксис пиздец. Я думал что посмотрю на гитхабе как делают все, а хуй там, костыли какие то.Непонятно вообще, прямые пути писать в CMakeLists для каждого файла в корне проекта, или эти add_subdirectory использовать. И как их линкать между собой.Помоги определиться с написанием с правильного CMake для проекта такой структуры:/Project- CMakeLists.txt- /res-- project.cpp-- project.hpp-- resources.hpp- /src-- app.ico-- project.manifest-- resources.rc
>>1000493Что-то вроде этого, не проверял, может накосячил гдеhttps://pastebin.com/E7MpKcp7
>>1000414Ужасы то какие.>>9996484. Дочитал до перегрузки операторов. Вот глядя на эти оптимизации компилятора, если я перегружаю, для примера, "+", есть гарантии, что компилятор не поменяет местами операнды?5. inline. Я могу его прикрепить в объявлении, в определении или сразу в двух местах, любая комбинация ошибок не выдаёт. В каких из четырёх вариантов этот модификатор применяется? 6. Список инициализации. В этот список можно засовывать чёрт-знает что. То есть по сути это просто более краткая запись того, что я изобразил ниже обведённое красным?
>>10007474. Компилятор никогда не меняет местами операнды (т.е. справа налево). Компилятор лишь может поменять порядок вычисления.5. Если объява и тело в одном файле, пофигу, куда писать. Если писать инлайн в заголовке для скомпиленой либы, наверняка будет ошибка (ты предлагаешь компилятору инлайнить то, для чего нет исходника).6. Для POD-типов список инициализации будет именно aggregate-инициализацией (пришедшей из C, это часто in-place конструирование). Обведённое красным может быть конструированием временного объекта (грамматически это std::initializer_list (название похоже на то, про что ты спрашиваешь, но это совсем другое), из которого конструируется объект нужного типа) и копированием/перемещением оного. Вообще говоря компилятору дозволено вызвать in-place конструктор в обоих случаях, но умеют ли они анализировать частный случай ради копеечной выгоды? Вряд ли.Очевидно, что в случае с int это похую. В общем случае списки инициализаций предпочтительнее. Тело вообще может быть пустое.
4. Порядок вычисления - это если на одном уровне операндов есть вызовы функций. Порядок применения операторов точно определён (associativity).
Как правильно подключать инклуды?Видел кучу разных способов, кто-то подключает все в main.h, а сам main.h в main.cpp. Кто-то во всех .h и в main.cpp подключает main.h, а потом эти .h уже подключают в .cpp.
Уважаемые с++ знатоки, вопрос задает аноним из Мухосранска.Есть один говнокод http://ideone.com/A0jPgw. Работает правильно, но неоптимально. Как его можно оптимизировать?Суть задачи: На вход подаются строки, а выдать мы должны либо "ОК", если строка встречается впервые, либо эту же самую строку и число(Сначала 1, потом 2, потом 3 и так далее)Пример:Ввод:ААBCВывод:OKA1OKOKДа, я знаю, что это можно сделать без класса, но мне надо с классом
>>1000815Строки загоняешь в словарь. Сама строка- ключ, значение по этому ключу - количество раз сколько эта строка встречалась.
>>1000815Есть такой контейнер. Map называется.
>>1000847>>1000869Спасибо, буду гуглитьТуда ведь можно этот класс вкорячить? Мне просто необходимо именно написать класс для хранения этой инфы
>>1000871Зачем тебе вкорячивать свой класс в контейнер общего назначения? Ты упорот?
>>1000875Преподы мои упороты> Разработайте класс, для хранения информации о зарегистрированных пользователях.
>>1000878Стоит уточнить упоротость преподов. Может оказаться, что map нельзя использовать.
>>1000885Про контейнеры не сказано ничего, следовательно разрешены, и map в том числе, я полагаюВообще говоря, решение такой задачи не требует и контейнеров и вообще занимает шесть строк, но вот эти ограничения... Зачем?
>>1000889Я бы хотел увидеть эти 6 строк, но вижу только ошибку 404.
>>1000890Каюсь, шесть строк -- это с мапом. Но все равно, зачем сюда вкорячивать класс -- неясно
>>1000890А, блин, только сейчас заметил, что код уже . Вот что я напердолил с классомhttp://ideone.com/8aXkqL
>>1000890>>1000892>>1000885>>1000875>>1000869Господа, а если реализовать класс с одним-единственным публичным полем -- ником и реализовать все через мап, но вместо строки используя созданный класс. Взлетит?
>>1000895А чем тебя твоя реализация не устраивает? Все методы find() делают то же самое, ты просто пользуешься уже готовой реализацией.
>>1000897Лично меня моя реализация устраивает всем. Проблема в том, что на большом тесте (98532 строк) она не укладывается в лимит по времени (лимит -- 1 секунда)
>>1000878> Преподы мои упоротыСкорее всего это ты упорот немного. Тебе нужен класс для хранения информации о зарегистрированных пользователях, а не класс для храненения имени пользователя. Тоесть тебе нужен класс с методами (к примеру): add(std::string name) и count(std::string name). Можно сделать чтобы add заодно еще и возвращал сколько раз встречается добавленное имя. Алсо add лучше назвать push_back (для большего подобия с stl), но это по желанию, смотря насколько ты себя дерзким парнем позиционируешь.
>>1000898Попробуй isThere модификатор inline заебашь.
>>1000899> Тебе нужен класс для хранения информации о зарегистрированных пользователях, а не класс для храненения имени пользователя. Просвети нуба, пожалуйста, а поля ему какие нужны?>>1000901> inline Ускорило, но на три сотых секунды. Надо выгадать еще 0,067 хотя бы
>>1000903>на три сотых секундыГулять как гулять! Хуячь __forceinline!
>>1000898Проблема твоей реализации что у тебя для подсчета количества строк просматриваются все 98532. А, к примеру, для варианта с словарем для ста тысяч строк будет просмотрено не больше 17 элементов - так как там логарифм. Твой алгоритм можно немного модифицировать отсортировав массив с строками, и используя бинарный поиск - эффективность будет как у словаря. Но остается проблема с заполнением словаря, если строки тебе не выдаются сразу пачкой - тебе прийдется пересортировывать массив после каждого добавления. Даже если использовать сортировку вставками, которая для такого случая (вставка одного элемента в же отсортированый массив) очень удобна - все равно нужно сдвигать элементы в массиве. Тоесть добавление каждой новой строки - линия. Тогда как в словарь - логарифм.
>>1000905Так оно не компилится.Или я не туда пишу?__forceinline int isThere (int n, int curPos, username * base){ int c = 0; for(int i = 0; i < n; i++) if(base[curPos].nick == base.nick) c++; return c;}>>1000909Понял, примерно, буду гуглить
>>1000903> поля ему какие нужныНеобходимый минимум - контейнер для строк. Тот же словарь, например. Или свой велосипед. Ну а так добавить можно еще что-то, например количество запомненых строк. Единственно правильного варианта нет. Нужно отталкиваться от сценариев использования твоего класса.
>>1000912То есть, как минимум map<string, int> и еще один int? Понял, пойду пердолить
>>1000898Замени на std::unordered_map
>>1000918>>1000912>>1000905>>1000899>>1000890>>1000847Господа, всем огромная благодарность, но послушал я вас лишь отчасти. Зашло вот это: http://ideone.com/innaMF Оцените по шкале от индуса до Линуса Торвальдса?
>>1000910Что за хуйню ты напрограммировал. У тебя линейный поиск идет, в то время, как по-хорошему надо логарифмический сделать с исопльзованием std::set или std::map, например.
>>1000932Надо, но я же нуб, так что написал хуйню. Но оно же работало. Меня смущала необходимость написания именно класса, поэтому я высрал это>>1000930
>>1000760>Как правильно подключать инклуды?Что значит "правильно"?
>>1000930> от индуса до Линуса ТорвальдсаОни друг от друга недалеко ушли. Оба не любят strict aliasing и обращаются к указателям до проверки их на NULL.
>>1000951Где ему тут проверка нужна?>>1000930Если в своей friend функции поменяешь значения на ссылки, то может получится ещё пару миллисекунд выиграть, но это не точно.
>>1000954>Где ему тут проверка нужна?Я в общем говорю. Твой код не смотрел.
>>1000955А, жопой читаю, простите.
>>1000954> то может получится ещё пару миллисекунд выигратьВозьму на вооружение, но все же я и так теперь управляюсь за треть секунды, мне хватит
>>1000930> username::username(string a){> nick = a;> }username::username(string a) : nick(std::move(a)) {}
>>1000930> inline bool operator < (const username a, const username b){> if (a.nick<b.nick)> return 1;> else return 0;> }Типичный boolshit.inline bool operator < (const username a, const username b){ return a.nick<b.nick; }
>>1000965И как по твоему, сократит время выполнения?>>1000963Хотя в эффективность этого верю
>>1000966>Хотя в эффективность этого верюДело не в эффективности. Я почти уверен, что компилятор выдаст для твоего и моего варианта одинаковый код. Он не тупой и понимает, что `if (x == true) return true; else return false;` можно заменить на return x;
>>1000967Резонно
>>1000963>>1000966В операторе >> я бы тоже использовал std::move для передачи строки в конструктор.
>>1000947Есть же наверное какие-то общие правила.
>>1000918Кстати, хорошая идея. Потому что в самом начале уже задается максимальное количество имен и можно выделить память для unordered_map-а (с учетом max_load_factor естественно).
>>1000990Думаю, нужно отталкиваться от того, что любой инклюд подставляет код в указанное место. Поэтому используй защиту от повторных инклюдов (#pragma once или комбинации #ifndef ANY_KEYWORD #define KEYWORD #endif, смотря каким компилятором пользуешься), разделяй реализацию класса и заголовочный файл класса, чтоб меньше кода подставлялось, это уменьшит время компиляции. Все статические инклюды то, где ничего не меняется, всякие <iostream>, <string>, <Windows.h> выдели в один отдельный заголовок, сделай его предкомпилированным, а всем остальным .cpp файлам прикажи использовать этот предкомпилированный заголовок, это тоже уменьшит время компиляции. Хотя всё это имеет значение на очень больших проектах, там будет ощутимо, когда компиляция занимает по 10-30 секунд.Смотри, чтоб не было рекурсивных инклюдов, когда A.h включает B.h И B.h включает A.h
Классно угораете.>>1000878Какая часть цитаты подразумевает запихивание твоего класса в map? Что именно преподы хотят видеть в классе - хранение строки (лолчто? Лолнахуй?) или считывание из cin?Стоило бы спросить у преподов про то, что должен подерживать класс - копирование, exception safety, thread safety и, самое главное, цель запихивания в класс. Потому что, когда что-то запихивают в класс, это делают либо для автоматического управления ресурсами, либо для того, чтобы в этот класс пихать что-то индивидуальное, а задание - прочитать из cin, и он один на всю программу.Подойди к заведующему кафедры и изложи упоротость препода. Считывание из cin и проверка на повторы с выводом результата - это одно действие, а не материал для класса.>>1000892Когда говорят о строках, говорят о строках читаемого кода - по статементу на строку.>bits/stdc++Совсем ебанутый.>>1000930Отлично, username - это чуть ли не один в один string. С таким же успехом мог сделать typedef string username> string name;> in >> name;> a = username(name);> return in;in>>a.nick - нет? Слишком просто?
Даже ещё лучше:return in>>a.nick;
>>1000993Годно расписал, спасибо.
>>1000999> Какая часть цитаты подразумевает запихивание твоего класса в map? Что именно преподы хотят видеть в классе - хранение строки (лолчто? Лолнахуй?) или считывание из cin?> Стоило бы спросить у преподов про то, что должен подерживать класс - копирование, exception safety, thread safety и, самое главное, цель запихивания в класс. Потому что, когда что-то запихивают в класс, это делают либо для автоматического управления ресурсами, либо для того, чтобы в этот класс пихать что-то индивидуальное, а задание - прочитать из cin, и он один на всю программу.> Подойди к заведующему кафедры и изложи упоротость препода. Считывание из cin и проверка на повторы с выводом результата - это одно действие, а не материал для класса.Честно скажу -- мне плевать. Мне нужно было пройти тесты и написать какой-никакой класс. Так что ну их, эти костыли, да и скорее всего, это никто и читать не будет>>1001002> Даже ещё лучше:> return in>>a.nick; А вот это классно, спасибо, возьму на вооружение
Чё пацаны, упарываетесь, когда работаете?
Можно ли каким-нибудь образом определить какая из перегруженных функций была использована или будет использована?
>>1001103Дебагером, отладочными трейсами
>>1001118Как?
>>1001122внутри перегруженной функции вывести текст вида "peregruzenaya funkciya"
>>1001127Мне нужно библиотечные функции определить, не мои.
>>1001129в режиме отладки посмотреть стек вызовов
>>1001129Во - гугло ссылка https://www.google.com.ua/search?q=%D1%81%2B%2B+%D0%BA%D0%B0%D0%BA+%D0%BF%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B5%D1%82%D1%8C+%D1%81%D1%82%D0%B5%D0%BA&oq=%D1%81%2B%2B+%D0%BA%D0%B0%D0%BA+%D0%BF%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B5%D1%82%D1%8C+%D1%81%D1%82%D0%B5%D0%BA&aqs=chrome..69i57.4596j0j7&client=ubuntu&sourceid=chrome&ie=UTF-8#q=%D1%81%2B%2B+%D0%BA%D0%B0%D0%BA+%D0%BF%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B5%D1%82%D1%8C+%D1%81%D1%82%D0%B5%D0%BA+%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D0%BE%D0%B2
>>1001134>>1001132Там нету информации о том какую библиотечную функцию я использую. Там просто показываются только мои функции.
>>1001174Когда доходишь до вызова делай принудительный вход в вызываемую функцию (Force Step Into) и смотри стек вызовов. Название вызванной функции будет в стеке вызовов.
Дайте советов мудрых по opencv. Нужно с помощью неё научиться в течении месяца это чтобы не примали меня за студента с горящей жопой распознавать изображение с камеры таким образом, чтобы ориентироваться на местности. Реквестирую постепенный план, по которому процесс будет происходить.
>>1001303В машоб-тред проследуй.
>>1001316Ты не понял. Тут алгоритмы нужны, чтобы на картинке, к примеру, 800x600 вычислить яркие цвета, отличающиеся друг от друга. Пусть это будут красные квадраты. Найти их центр масс. Далее вычислить до них расстояние через известные величины. Это задача, и никакого ML не требуется.
>>1001352Ну я тебе могу ссылок из гугла покидать на запросы "opencv color detection" и "opencv figure detection".http://opencv-srf.blogspot.com.by/2010/09/object-detection-using-color-seperation.htmlhttp://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/https://stackoverflow.com/questions/11424002/how-to-detect-simple-geometric-shapes-using-opencv
>>1001370 (OP)>>1001370 (OP)>>1001370 (OP)>>1001370 (OP)>>1001370 (OP)перекот
>>1000542Т.е. >писать прямые для каждого файла в корне проекта ?Спасибо, анон.
>>99800011. Одикостоящая цифра преобразовывается в тип класса, из за неявного преобразования. Конструктор, который принимает один аргумент типа, становится функцией преобразования из типа в аргумента в тип класса. поставь рядом с конструктором explicit один "d" пропадет.
>>9980007. Новый объект класса инициализаруется уже существующим объектом класса, чистой воды контактор копирования.Что тебя смущает ?
>>1001800Конструктор копирования, пардон.Самофикс.
>>1001797Точнее d не пропадет у тебя будет что то типо "нету преобразования из int в тип А". Ошибка компиляции будет.Вопрос отдельный : Как ты так хитро вызываешь f() ? она ведь метод класса, а операция членства не задействована (c.f(3) например).