Это копия, сохраненная 28 июня 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Прошлый >>993446 (OP)
Теги: кресты, cpp
Что это за уёбский язык такой? На кой ляд заново переписывать все статики наружу?
Там проблема не в статике, а в том что в классе нельзя определять переменные которые должны хранится в памяти как объекты. Внутри класса можно определять только константные статические поля интегрального типа (в тим числе енумы). Сделали так из-за какой-то хуйни, походу никто точно не понимает нахуя. У СТРАУСА в "дизайне и эволюции" должно пояснятся скорее всего, но я что-то никак не соберусь почитать.
ProjectName
--src
----main.cpp
--build-ProjectName-gcc5.3.0
----ProjectName.exe
Максимум, что получилось - закинуть все билды всех проектов в отдельную папку.
Чем класс принципиально отличается от функции? Почему в функции может быть любой статический объект без пердолинга?
И как его на Qt натянуть?
Использовать обычный make?
Посмотри в настройки проекта, там где-то есть путь к билду относительно папки проекта.
Можешь рассказать мне о том, почему статики в функциях любые, а в классах - только интегральные или с внешним определением?
Потому что в случае функции ясно, где выделить место под переменную: в той же единице трансляции, в которой определена функция.
В случае класса нужно явно определить, в какой единице трансляции будет располагаться переменная.
Потому что статические переменные создаются в объектном файле, и надо явно указывать где именно она будет лежать с помощью внешнего определения.
Не проверял, но предположу, что использование статической переменной в функции компилируется в обращение к какому нибудь фиксированному участку виртуальной памяти. Класс же - лишь структура, созданная для удобства программиста. В виртуальной памяти она представляет из себя либо массивы байт в стеке треда, равные по размеру ширине стека, или просто где нибудь последовательная область памяти в куче (а того и еще хуже объект пидорасит на маленькие кусочки с ссылками на следующие участки, так вроде в сисярпах). Раз статическая переменная принадлежит не объекту, а его описанию, то надобно где то в коде объявить эту переменную, чтобы компилятор выделил под нее память. Почему бы еще на этапе компиляции сразу на старте не выделить под статические переменные участок памяти? Ну, наверно потому что ты статическим можешь сделать что нибудь большое, что положит весь стек к хуям, поэтому сам контролируй размещение и выгрузку статической переменной.
И что это такоэ?
Зачем присваивать переменные в хедере? Если реализация функций вне хедера, то и переменные логично вынести из него, даже не учитывая особенности компилятора.
https://pastebin.com/492Fa3ef
Втоарая часть - конструктор.
Пишет, что не может найти подходящий конструктор в строке созания. Что это может быть?
>basic_string() noexcept(noexcept( Allocator() )): basic_string( Allocator() ) {}
>explicit basic_string( const Allocator& alloc ) noexcept;
Что это вообще за хуйня? Что там происходит, можете пояснить?
> noexcept(noexcept( Allocator() ))
Служебный спецификатор, подсказывающий компилятору, что конструктор строки не кинет исключение, если конструктор аллокатора так же не кинет исключения. Фактически, под пустую строку место не выделяется, поэтому сам конструктор строки, если бы он не использовал аллокатор, мог бы быть помечен только при помощи noexcept, однако, конструктор аллокатора может бросить исключение, поэтому, чтобы не спровоцировать undefined behavior во время выполнения, делается такое.
Сам же по себе noexcept в крестах - некий способ оптимизации, который должен в теории избавить программу от некоторых оверхедов на обработку исключений (сейчас используются zero-overhead исключения, которые, правда работают достаточно плохо, потому что большинство доступов к таблице переходов будет сопровождаться кэш-промахами)
В mg.h пишу int test;
В main.cpp пишу #include "mg.h" и там переменная работает корректно.
В mg.cpp если прописать #include "mg.h", то пишет "multiple definition of `test'". Если не прописывать, то "'test' was not declared in this scope". Обе ошибки в mg.cpp.
Объявлять в .h как extern int test;, а в .cpp уже по нормальному?
Создать класс со static полями как в джаве (если тут так возможно)?
Есть int arr[] типа
2, 0, 3, 4, 5, 6, 4, 5, 6, 4, 5, 6
Количество элементов конечно. Сами значения могут быть любые, а не 0 .. len(arr)-1.
Как найти цыклы? Иными словами, в определенном месте начинается цикл (3 в примере), который имеет определенную длину (3).
Флойд про другое.
Добавлю. Цикл начинается с определенного индекса и повторяется до конца массива.
Цикл в цикле? Массив большой, долго будет выполняться.
Спасибо, программач.
>Объявлять в .h как extern int test;, а в .cpp уже по нормальному?
В си так можно. Возможно и в этих ваших плюсах тоже.
Ещё часто можно увидеть конструкцию
[code]
#ifdef BLABLABLA
#define EXTERN_MG
#else
#define EXTERN_MG extern
#endif
[/code]
А потом все глобальные переменные в mg.h объявлены с ключевым словом EXTERN_MG, а уже в mg.cpp перед включением mg.h стоит #define BLABLABLA
Но глобальные переменные - это плохо, пнятненько? Если ты на плюсах пишешь, то у тебя их вообще быть не должно.
>это плохо, пнятненько?
Конечно. Я пока изучаю язык, моя задача - сломать его как можно большим количеством способов, проверить на работоспособность какие-нибудь извращённые конструкции. Отсюда и вопросы такие.
Удобно проходишься бесконенчым циклом по списку сокетов до победы. Лабу сделать хватит.
Какой ещё хеадер? У меня всё кучей в main.cpp.
>>1001929
Как нехуй: начинаешь с конца массива и ищешь суффикс массива в том, что читаешь. Как только находишь совпадение, длящееся до текущей позиции, цикл найден.
В общем, суть в следующем: На основе двусвязного списка нужно реализовать редактор правильных скобочных последовательностей с тремя операциями: L и R двигают курсор влево и вправо соответственно, а D удаляет скобку, на которой находится курсор, соответствующую ей парную и все между ними.
Вот полное условие
http://codeforces.com/problemset/problem/670/E?locale=ru
Написав некоторый говнокод я смог сделть перемещения и удаление в том случае, если курсор смотрит на открывающую скобку. Попытался аналогично сделать удаление, если курсор на закрывающей скобке -- насосался. Что я делаю не так?
Вот код: http://ideone.com/XhomLw
Проблемы идут с 155 строки
И да, список необходим именно самописный
>Если ты на плюсах пишешь, то у тебя их вообще быть не должно.
Ага, вместо этого будет целый статик класс, работающей так же.
Прочитал про сокеты беркли. Стал имплементировать метод приема бинарных данных от тонкого клиента. Все реализовано в цикле for(;;):
1. опрашивается select;
2. затем создается массив char[1024];
3. с ним вызывается recv;
4. потом тут же в цикле while (!empty) создается другой массив char[1024] и снова вызывается recv, чтобы прочесть есть ли что в остатке или нет. Если recv возвращает 0 или -1, то empty = true.
Короче, что-то вроде такого:
>for (;;) {
> if (select(...) <= 0)
> {
> break;
> }
> char b[1024] = recv(...);
> bool empty = false;
> while (!empty) {
> short s = char b[1024] = recv(...);
> if (s <= 0) {
> empty = true;
> break;
> }
> }
>}
Но получается блокирующая хрень во втором цикле на функции recv. Накидайте примерную схему реализации.
Никак не могу создать массив из QChart'ов, аж бесит.
Строка типа [code]QChart *ch = new QChart[4][/code] выпинывает экзешник с прекращением работы
А там есть задачи попроще? codewars.com выглядит приятнее из-за разнообразия уровней сложности
Покажи раздел. Где не тыкну - везде охуительная графомания уровня научных исследований.
Блет, ну лабу мне такую дали, ну чессслово.
Я и ответы там же нашел, но все на стеке работают
Клянусь, братишка.
Как бы то ни было, если не можешь помочь -- то уж не провоцируй, пожалуйста?
>Конструктор по умолчанию у string с C++17 стал таким.
>>basic_string() noexcept(noexcept( Allocator() )): basic_string( Allocator() ) {}
>>explicit basic_string( const Allocator& alloc ) noexcept;
>Что это вообще за хуйня? Что там происходит, можете пояснить?
Для новых ньюфагов есть отдельный загон. Хватит тут всякую элементарную хуйню спрашивать.
неосилятора чего? Сишных массивов?
>Как нехуй: начинаешь с конца массива и ищешь суффикс массива в том, что читаешь. Как только находишь совпадение, длящееся до текущей позиции, цикл найден.
Код?
> Я так посмотрел, оптимизации в gcc это дело совсем не решают, два отдельных вызова.
Пизди в другом треде. https://godbolt.org/g/jZSb96
Он у тебя sincos из гнутой math.h вызывает. Под виндой ее может не быть даже в минге.
Ну напиши ifdef для спермы, делов-то.
Чудеса. Я и O2, и O3 ставил. Не знаю как это всё сочетается с дебаггером, но по замерам времени до fsincos никак не оптимизируется, если сравнивать с ассемблерной вставкой. Не знаю, видимо codelite меня обманывает, и вообще за эти полторы недели как я его использую он себя что-то не очень показывает.
Господа, крайне стыдно возвращаться к этому, но без вас я скорее всего не справлюсь, посмотрите пожалуйста
КМП-поиск в обратном порядке. С построением таблицы для ускорения поиска будет немного сложнее, но её можно сделать unordered_set-ом.
Код писать не буду: лень и есть другие дела сейчас.
Не понял какой ты имеешь ввиду план.
Вот замеры (N=1024102416). То есть cos и sin по отдельности не оптимизируются от слова совсем, и даже нет разницы считаю я синус и косинус от одного аргумента или от разных.
Понятия не имею. Интернет в помощь.
На нем еще будут писать новые проекты или он целиком и полностью погрузился в legacy?
>На нем еще будут писать новые проекты
Да, будут
>стоит ли вкатываться
Раз спрашиваешь об этом - то нет.
Просто пока читал треды, сложилось такое ощущение, что в С++ сделано все через жопу, и поэтому плодится такое количество говнокода
Просто поражаюсь тому, насколько много говнокниг дается новичкам.
Сраный Мейерс и Александреску... Нет, чтобы дать Страуструпа и Степанова...
>Почему лучше него нет языков?
Все языки, которые мы сейчас имеем делятся на три вида:
Функциональщина
Скриптовые
C/C++/C#/Java etc
Функциональщина - говно, т.к. непрактична.
Скриптовые - медленные и нетипизированные. Из-за нетипизированности есть проблемма того, что невозможно проверить типы на этапе компиляции, сделать хорошую IDE, хорошо делать профайлинг etc
Остаются си-подобные языки, где король C++. Он бюрократизирован, но среди сиподобных он, имхо, лучший.
Не
>в C++ сделано все через жопу
а
>с помощью C++ сделано все через жопу
Для C++ нужны очень прямые руки.
>но среди сиподобных он, имхо, лучший.
Добавлю. Просто из альтернатив есть
C - но он слишком низкоуровневый.
C#, но для него нужно с собой носить дот нет среду.
Java - нужно носить JVM.
I disagree. В стандарт включили много говна. Взять те же лямбды...
>C/C++/C#/Java
Шобля?
А вообще охуенная классификация
>Все живые существа делятся на три вида
>Жирные
>Четвероногие
>Голуби/Птеродактили/Свиньи/Коровы
Потому и нужны прямые - соблазна много. И указатели, и макросы, и темплейты, и oop, и пляски с move/copy semantics, и перегрузка всего, и теперь еще и лямбды.
Плюсы конечно говно, но дело явно не в лямбдах, они просто отлично сделаны. Что тебе не нравится?
Я в си( и в программирование в общем) полный нуб, как можно реализовать такую штуку как log? То есть, нужно все слова введенные в консоли послать в файл.
И еще вопрос: как потом этот файл куда-нибудь послать. Я хочу чтобы этот лог файл посылался мне, от другого человека, что использует мою программу.
Понимаешь, при таком большом стандарте начинаются траблы с поддержкой компилера.
>>1002213
>Не на моей стороне
Я пролог забыл, ок.
>>1002214
>Плюсы конечно говно, но дело явно не в лямбдах, они просто отлично сделаны. Что тебе не нравится?
Лямбды говно, т.к. позволяют делать анонимные функции. Если даешь имя функции, но есть номенклатура.
А мамку тебе не выебать?
Ищи про
>open
>read
>write
>stdin
>как потом этот файл куда-нибудь послать
Открыл email клиент, приложил файл, послал.
>пролог
В списке си-подобных?
>Лямбды говно, т.к. позволяют делать анонимные функции
Правильно. Каждому однострочному говницу, примененному в одном месте - свое имя!
>Открыл email клиент, приложил файл, послал.
Это программа сама должна сделать? То есть такое можно реализовать в программе?
Хотелось бы именно, чтобы автоматом отсылалось.
Прошу прощения за глупые вопросы и спасибо, что ответил.
>В списке си-подобных?
В логических. Так твоя классификация будет полной.
>Правильно. Каждому однострочному говницу, примененному в одном месте - свое имя!
Да. Лучше прочитать имя и понять, что делает функция, чем разбираться. Это называется номенклатура.
Отправлять через внешнюю программу: ищи про system (хотя это очень хуевый api, но сойдет) - вызывай хоть sendmail, хоть rm-rf
Отправлять по сети самостоятельно: читай про сокеты - отправляй/посылай по сети любое говно
>В стандарт включили много говна. Взять те же лямбды...
дзен заключается в понимании того что крестовые лямбды - синтаксический сахар и что это правильно, тк настоящие лямбды крестам не нужны
>Лучше прочитать имя и понять, что делает функция
>int slozit_x_i_dva(int x) { return x+2 }
Без названия действительно хуй разберешься, а часто в лямбдах идут функции именно такого уровня сложности.
Плюс у лямбд в c++ есть еще capture list.
>дзен заключается в понимании того что крестовые лямбды - синтаксический сахар и что это правильно, тк настоящие лямбды крестам не нужны
Язык должен быть простой. Сахар убрать. ООП убрать. Оставить только генерики и концепты.
Классы убрать.
>int slozit_x_i_dva(int x) { return x+2 }
Из-за таких профессиАналов, как ты мы имеем столько говнокода.
Большое спасибо. Буду гуглить.
Ты свой код на стандартном списке тестировал?
>Лямбды говно, т.к. позволяют делать анонимные функции. Если даешь имя функции, но есть номенклатура.
Пиздец долбоеб.
Я вот уже вижу, как ты без вложенных функций и лямбд для каждого одноутробного говнища уровня collection_of_zalupa.map([] {++i;}) пишешь свою отдельную функцию в глобальном (и потом еще миллиард шаблонного говнища чтобы заинлайнить это дело, вместо одного простого шаблона).
>Java: ООП язык на виртуальной машине
>C#: ООП язык с функциональными элементами на виртуальной машине
>C: Процедурный кросплатформенный ассемблер
Где тут подобие-то?
Чому? Потому-что ЕНТЕРПРАЙЗ? Потому-что компилится долго?
Дык дохнет тоже в свой байт код компилируется.
>>1002246
А ещё javascript что-то там кроме названия унаследовал от жявы, да.
А еще отсутствие отступов.
В целом можно сказать, что скриптовой - это когда пишешь, а потом узнаешь, что делает.
Очевидно, в синтаксисе. В нормальных языках нет такого говна, как инкремент/декремент внутри выражения, ебанутый синтаксис цикла FOR, ненужных скобок в IF и WHILE, замусоривающих код.
Ну и петушиная лексема ; совершенно не нужна - рудимент из тех времен, когда экраны были маленькими, и приходилось писать несколько statement'ов в одной строке. В 21-м веке statement'ы должны разделяться переводами строк.
Ну так в рантайме там точно так же нет никаких типов, от этого всякие скалы и прочие статические (с реальной статической системой типов, а не полудинамической залпы из Явы) страдают. И питон тоже житом обладает (хоть и не в основном интерпретаторе).
>>1002256
Любой LLVM компилятор сразу в байт код компилирует, не перепрыгивай. Сишка в байткоде разве что в исследовательской буйнее вроде Грааля используется.
А еще постоянно лазишь в хелп, чтобы узнать имя метода.
Кстати о C и статической типизации.
Я вот могу сделать recv из фаила, и read из сокета. И никакой type-check этот элементарный проеб не ловит.
Получается си - скриптовый язык?
А ещё у GCC своя собственная сишка и плюсы, как у микросовтовского компилера.
>Получается си - скриптовый язык?
Просто ты профессианал.
>>1002265
Питонист сначала пишет код, потом запускает и пытается поймать exception.
>Любой LLVM компилятор сразу в байт код компилирует
Если он тебе байткод на диск не пишет - это не значит, что его там нет. На расшифровку самого названия LLVM посмотри.
Python имеет альтернативный синтаксис, включаемый с помощью from __future__ import braces (блоки выделяются не отступами, а фигурными скобками). Если бы этот синтаксис был основным, тоже был бы нормальный язык.
А в C/С++/Java/C# формальными методами верность программы статически доказывают. Так?
В сиподобных такие баги отлавливает (в большинстве случаев) компилятор. В питоне, руби etc приходится дебажить.
Что тебе не ясно то?
Про COBOL забыл. Все для людей.
>thisthread
В каком-то движке борд делалось по таблице на борду и действительно был треш типа
>SELECT * FROM $this_board
Когда использую версию 1.1.0 - все собирается, но программа все еще ищет динамические либы
Потом решил использовать версию 1.0.2 (Qt не скомпилился с 1.1.0) - теперь оно совсем не собирает.
В чем проблема может быть?
А я пишу на плюсах. И даже последние стандарты не многое позволяют ловить по сравнению с каким нибудь окамлом где такой хуйни писать вообще нельзя или растом.
И все равно я чувствую, что что-то не так.
Может можно как-то без шаблонов обойтись? Задача-то, всего ничего, хранить запросы к БД, пока она их выполняет вместе с набором запрошенных значений.
>>1002282
Ой да ладно, даже процедуры, порой, бывают полезны. А хотя погоди-ка, кажется я тебя помню
В них можно поля в начале написать без private. В структуре придётся в конец пихать и писать private для того же размера кода.
>В структуре придётся в конец пихать и писать private для того же размера кода.
В структах же public/private не имеют эффекта, так?
Ты код-то покажи, хотя бы пример.
В слепую могу сказать только что можно просто пихунить в контейнер tagged union.
Не имеют и не могут иметь.
>>1002298
>В плюсах не вылетают эксепшены и ничего вообще не падает в рантайме?
В плюсах большинство моих багов в питоне выявляется компилером. Счастье просто.
>Иначе реально классы нужны становятся.
Совершенно не нужны. Нужны структы и концепты. ООП не нужно.
Истину глаголишь.
Так, еще раз, в чем у наз там разница, между struct и class, за вычетом дефотного public/private?
>Значит ты очень хуёвый программист на питоне.
Хуй знает. Видел других таких же, получают нормально. Может мы все хуевые тогда.
В том, что классы требуют много памяти под инфраструктуру, а структы нет.
Если у тебя в QueryResult будут шаблонные классы — то переписывай всё на наследовании или tagged union-ах (можешь просто std::variant взять), что больше нравится. Иначе насрать.
>Значит ты очень хуёвый программист на питоне.
Но я тебе могу сказать, что на питоне это норм, когда пишешь, а потом дебажишь.
А теперь заснуть в структуру методы и открой рот еще раз.
>>1002310
Я видел человека, который пишет функции с 26-ю аргументами и получает за это деньги. Зп — это показатель умения проходить собеседования.
>А теперь заснуть в структуру методы и открой рот еще раз.
Просто пиши методы для структуры.
>Ну на плюсах это тоже норм.
На плюсах все намного проще. IDE помогает, компилер ловит баги уже на этапе написания строки.
В питоне такого нет. И repl тут не заменит ide.
IDE у плюсов работают ровно до момента шаблонной дрисни/использования нестандартных расширений (без которых не обходится ни один большой проект, из-за чего например ядро линукса компилируется только gcc), и ловятся там ошибки уровня int i = "hui" и бесконечных циклов.
А что хранится в vtables, если класс у класса нет наследников и предков?
А что на счет структур с наследниками и предками?
Истину глаголишь. Как говорится, на компилятор с IDE надейся, а сам не плошай.
У питона, считай, вообще нет IDE. Самое лучшее, что там есть - это repl (bpython or ironpython).
>>1002334
По дефолту об RTTI нужно отдельно попросить. а vtable появляется только если туда есть что положить.
>По дефолту об RTTI нужно отдельно попросить. а vtable появляется только если туда есть что положить.
Вроде так и есть, но в дизасмах часто видел vtables без нужды. Возможно, зависит от компилятора тогда.
Да нет, есть, причём весьма кошерная (и уже даже не одна).
>>1002333
>Попробуй создать массив из классов и массив из структов. Посмотри, что тратит больше памяти.
И как это замерить? С учётом всей залупы с выравниванием и страничной адресации памяти, и прочей платформоспецефичной хунты конкретного аллокатора.
А как на наследование переписать? У меня и близко представлений нет(почти) какие могут быть запросы и что в итоге нужно будет получить, так что реализовать все возможные в одно широченное дерево едва ли выйдет.
А вот про variant я до этого и не слышал даже. Гляну потом, как работает, может отрапортуюсь о результатах реализации потом.
"In absence of an access-specifier for a base class, public is assumed when the derived class is declared struct and private is assumed when the class is declared class."
stackoverflow.com со ссылкой на Стандарт утверждает, что это таки единственная разница между этими ключевыми словами.
Ты постом промахнулся. Но разницы в структах между public и private нет вроде. Или уже добавили?
Да, между структурами и классами нет разницы, кроме дефолтного доступа к членам и при наследовании.
Даже трейт есть std::is_class, который даёт true, если тип объявлен с ключевым словом class или sgtruct. Трейта std::is_struct не существует.
Сделай метод в базовом классе для получения/использования нужных данных, наследуй от него все остальные и переопределяй, для каждого со своей логикой.
>нет разницы, кроме дефолтного доступа к членам и при наследовании.
А там есть приватный доступ?
> vtables есть всегда
Не знаю таких ABI, где vtables есть всегда. В известных мне ABI от микрософт и в Itanium C++ ABI vtables есть не всегда.
если ты имеешь ввиду что-то типа
class base
{
virtual <type> getData();
};
class derived_forInt : public base
{
virtual int getData();
}
то не получится, потому что можно переопределить логику, но не возвращаемое значение. Если ты имеешь ввиду что-то другое, то что?
> но не возвращаемое значение
Ограниченно можно переопределить. covariant return type, всё такое.
Ух что ты вспомнил! Когда-то читал об этом, вроде vtables все равно будет создана, но для итогового объекта она будет меньше(на пересечение) суммы vtables объектов-родителей.
А вот просто интересно, как часто кому-нибудь приходилось с этим сталкиваться?
Если речь о том, что бы возвращаемым значением брать некий общий для всех возможных тип и потом уточнять в наследниках, то тоже нет, потому что типы могут быть любыми, и между int и std::string связи найти никак не получится.
vtable при виртуальном наследовании нужна, чтобы хранить указатель (или смещение) на базовый класс.
Зато можно написать обработчик который будет сувать их куда надо. Иначе бери std::variant.
Я просто мимо проходил, с чего всё началось — не читал.
Я не знаю, как можно поставить обработчик, который бы решил эту проблему, но вот теперь, осознав std::variant, я думаю в Querry вместо std::vector<std::tuple<QuerryResult...>> для хранения результата запроса, использовать что-то вроде
std::vector<std::vector<std::variant<int,double,std::string>>>
>Лямбды говно, т.к. позволяют делать анонимные функции. Если даешь имя функции, но есть номенклатура.
Если исключить из всех языков то, что может использоваться неправильно, от языков ничего не останется.
Есть куча ситуаций, в которых имя функции не более информативно, чем её короткое тело.
>>1002244
>мап и фолд вообще не делать.
ЧЯДНТ: >>1002243
>>1002257
>си подобное?
Уёбищная характеристика. Си - это язык, сочетающий скорость выполнения ассемблера с читаемостью ассемблера. В Си нет ничего того, чего не может быть в других языках, это элементарный язык. Си-подобный язык - это язык без ГЦ, без шаблонов, без классов, безо всего вообще.
>>1002298
>Хз, они же там вроде есть? Должны иметь. Иначе реально классы нужны становятся.
Что ты пишешь-то, блядь? Структура в C - это кусок данных без методов и привата. Структура в С++ - это данные с методами, с виртуальными функциями, с приватом - тот же класс. Что ты сказать хотел-то?
>>1002323 >>1002312
Ну что ты за ебанат-то? Что за counter? В плюсах нет ГЦ, пока не попросишь.
>>1002329
>и ловятся там ошибки уровня int i = "hui" и бесконечных циклов.
Что значит "ловятся"? Ты никогда этих ошибок не видишь, так как они сразу исправляются.
>>1002333
Ничто не мешает сделать виртуальный метод в структуре.
http://ideone.com/K12dLb
Теги Doxygen
Все линкуется, вроде бы, успешно, но исполянемый файл все равно ищет .dll
>Если исключить из всех языков то, что может использоваться неправильно и научить программеров писать код правильно, то в языке будет только то, что нужно.
Пофиксил тебя. Не бомби.
Тогда мы все писали бы на ассемблере. Ведь если подумать — все эти абстракции над ними это бесполезная хуита.
Что такое "опенссл под бустом"?
https://stackoverflow.com/questions/10774937/statically-linking-libraries-in-mingw - и вообще погугли, наверняка что-то найдёшь.
>>1002552
И это будет машина Тьюринга?
>>1002560
Не вижу принципиальных отличий C от ассемблера, кроме препроцессора.
Это значит, что ссл в бусте требуют дополнительного всего, нужно дбоавть хедеры опенссл и линкануть библиотеки.
у меня все это есть, как видно на скринах - БЕЗ линка статических библиотек проект НЕ собирается, но после того как их линкуешь он все равно требует .dll.
Я гуглил, и очень много. Даже пробовал другие версии опенссл (но там буст их не воспринимает, скрин 50 постами выше).
Если дать ему .длл - все работает отлично, но мне нужна именно статическая сборка без .длл.
Это дурацкая идея, но всё равно хочу предложить: запуст текстовый поиск по этому названию по всем файлам, которые моггуцт быть использованы в процессе компиляции:
- папка MinGW
- папка ОпенССЛ
Тоталкоммандером, например.
как раз таки через QtCreator и запускается, но потом крашится. если запускать экзешник, то он вообще не запускается, говорит, что нету Qt5Cored.dll, Qt5Guid.dll, Qt5Sqld.dll. я попробовал sqldrivers скинуть в папку с экзешником, но все равно требует Qt5Sqld.dll.
>Не вижу принципиальных отличий C от ассемблера, кроме препроцессора.
Да ты, аутист, и палец от жопы не отличишь.
Добавь в системной переменной PATH путь директории QT_DIR/VERSION/bin, соответственно что означают первые два параметра ты должен понять сразу.
Научи, раз ты тут шитпостишь всё равно. И так, чем отличается C от ассемблера? Типизацию я забыл, а ещё чем? Стандартная библиотека - это не часть языка, а часть стандарта реализации.
>>1002616
Искать не в названиях файлов, а в содержимом. Искать libcrypto-1_1
>>1002620
Это: >>996792 . Если у тебя программа рушится - это говнокод в 99,99% случаев, а не проблемы с Qt.
Вчера мне так никто и не ответил
Я хотел бы узнать, где его применяют и зачем.
Вряд ли бы ты стал учить что-то, не зная, для чего оно используется.
Большую часть технологий применяют по трём причинам:
- есть наработки - методики и код
- синдром утёнка (работать привычным известным инструментом удобнее, чем изучать новый)
- доступные альтернативы не обладают преимуществами, компенсирующими затраты на изучение
Огромное число задач решается на широком спектре языков: от Баша до Ассемблера. Нет однозначных причин для использования чего-то конкретного.
Очень много пользовательского софта написано на плюсах, но в большей части этого софта плюсы не незаменимы. Плюсы либо никогда не уйдут, либо будут очень медленно замещаться в: редакторы звука и видео, гейдев, научный софт, компиляторы и интерпретаторы, любые алгоритмы обработки больших объёмов данных. Это из-за того, что в плюсах есть много инструментов (разной степени удобства) для описания отношений между типами и для вычисления во время компиляции (constexpr стал применим к сложным структурам данных) и нет обязательного GC.
При это, если не лезть в дебри языка, программа на плюсах может быть читаемой и понятной.
Ни в какую VS для 64 бит не завезли. И правильно сделали. Пишите переносимый код (расширения GNU — можно), мрази. Для этого в VS2017 дополнительно завезли ключик, отключающий майкросовтовские расширения C++.
Но когда я обнаружил поиск/замену, работающий по принципу НАМ, меня прорвало.
Где мне в этом можно убедиться? В редакторе в котором я открыл файл с исходным кодом пишется что это UTF8.
Исходный код и кодировка char-ов - разные вещи. В чарах не может быть UTF-8, это невозможно, по стандарту нельзя. Именно поэтому u8 и ввели в последних стандартах.
Комиплятор требует именно второй. Причем без SSL все работает нормально.
>Что помешает мне засунуть однобайтный unicod`овский символ в char?
Если его значение будет больше 127, то твоя строка превратиться в тыкву.
>В чарах не может быть UTF-8, это невозможно, по стандарту нельзя
В смысле не может? Храни там что угодно, другое дело, что печататься будет мусор вместо текста.
upd
Заметил, что boost::asio::connet / async_connect работает только через basic_resoler::iterator.
Причем если брать чистый tcp сокет, то можно все еще использовать Ip::tcp::endpoint, а если использовать для ssl boost::asio::ssl::stream<boost::asio::ip::tcp::socket>, то функция async_connect/connect там отсутствует.
Следовательно вопрос, как подсоеденить boost::asio::ssl::stream<boost::asio::ip::tcp::socket> по ip::tcp::endpoint ?
В целом, ssl почти всегда используется для 443 портов которые весьма удоюно получать ресолвером, однако в том же QSslSocket все еще можно коннектится по любому порту. Просто не хочется дырявых абстракций.
http://www.boost.org/doc/libs/1_64_0/doc/html/boost_asio/reference/async_connect/overload4.html
http://www.boost.org/doc/libs/1_64_0/doc/html/boost_asio/reference/ip__tcp/endpoint.html
На второй пикче у тебя ок, потому что ты передаёшь итератор, который ты и должен передавать. Пихаешь свой эндпоинт в любой контейнер с итератором и передаёшь итератор.
Блять, я аж в голос заорал с этих охуительных неймспейсов.
boost::asio::ssl::stream::nebo::allah::moha::govno::hui::pizda::jigurda
Как хорошо, что я больше не пишу ничего на крестах.
>Блять, я аж в голос заорал с этих охуительных неймспейсов.
Этим говном страдает только boost::asio. Ну ладно, ещё пару библиотек из буста.
>Как хорошо, что я больше не пишу ничего на крестах.
Альтернативу без GC и без ебли головой о стену вроде раста уже придумали?
>AbstractFactoryProxyBean
AbstractSingletonProxyFactoryBean< AbstractSingletonProxyFactoryBean> abstractSingletonProxyFactoryBean = new AbstractSingletonProxyFactoryBean< AbstractSingletonProxyFactoryBean>();
Примерно так я и думал, только
>Пихаешь свой эндпоинт в любой контейнер с итератором и передаёшь итератор
звучит слишком сложно, я не силен в темплейтах, да и вообще дурачек
http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/reference/ip__basic_resolver_iterator/create.html
Все что нашел, на скрине реализация, ты это имел ввиду? Что за сервис и хостнейм, я ж блин учусь только.
По сравнению с таким даже auto socket = boost::asio::ssl::stream<boost::asio::ip::tcp::socket>
Не кажется таким пиздецом, лол.
> Что за сервис и хостнейм, я ж блин учусь только.
>>1003065
>Боже блять, пиосто дропни это оверинжинирнутое говнище.
Советую прислушаться.
Ну, блядь, мне ж интересно.
Или может пойти доту скачать и пойти работать сисадмином на полставки?
Можно просто взять нормальную библиотеку для сети, а не это говнище из буста, я же не призываю идти грузчиком работать.
Если я правильно понял из документации, то servicename и hostname они запихнули туда для красоты, а нужны они только для ресолвера.
>>1003097
Ну, давай, предложи, только нормальную, чтобы и кроссплатформенность, и версии под старые компиляторы и чтобы хуй в жопу.
А какие есть нормальные кросплатформенные библиотеки только для сети? Я сейчас тоже как-раз ищу библиотеку для сети, другой анон.
Дедлайн через 2 дня, с Qt ебли много, на их IDE еще перекатываться придется, а она говно мне не понравилась.
>>1003106
Через WinAPI имеешь в виду? Или в MVC++ есть что то для сети вкусное?
https://github.com/fffaraz/awesome-cpp#networking
>>1003102
Старые в 2к17 начинаются с поддержки 11-й версии компилятора (если нужен 03 или 98 — лучше уже ситного говна навалить, чем асио вымазываться):
https://github.com/facebook/folly
https://github.com/facebook/wangle
https://github.com/Microsoft/cpprestsdk
Так же любой большой или не очень фреймворк — Qt, Jute, WX...
Хз, у меня как дебаггер не завелся с первого раза и ошибки выдавал на кривой кодировке в виде "втфдцатолфатлфота тпоырпгц4пр89прыоп р08п2н48п2р4п42 Source.cpp алфо ощыуопрщыут 99:33", так я обиделся и забил кхуям. Жаль, что на крестах только на нем GUI и пилить.
Я тебя сейчас разочарую: у тебя в списке ни одного компилятора не поддерживающего хотя бы треть 11-го стандарта нету. Такую хуитку можно к каждой второй библиотеке нарисовать.
>им бы еще возможность включения нацисткого автовыравнивания из студии и вообще цены б не было.
Он у них есть, Beautifier, или как там, в плагинах включается. Правда в культякрейтере анализ и автокомплит ну очень деревянные, даже с clang Code model.
Разберешься один раз - всю жизнь проблем не будет. Правда я все еще не могу по-человечески линкануть опенссл без длл.
В бусте за один пропущенный плейсзолдер в бинде 120 строчек ошибок.
>>1003115
Меня интересовала возможность делать ПО под любую древнейшую хуевину без редистров, и под старыми компиляторами я имел ввиду vс8, к примеру.
Как же заебато, когда разработчик языка навязывает свой стандарт, как, например, с пуфоном, в крестах подключи две либы и все, заебешься то подчеркивания, то CamelCase то еще какая хуйня...
>Альтернативу без GC и без ебли головой о стену вроде раста уже придумали?
Мань, ну не нада демагогии плес
Нихуя нет.
Давай.
>Альтернативу
C++ - язык общего назначения, так что альтернативой ему является любой язык общего назначения. Уточни, пожалуйста, о какой конкретно сфере применения крестов ты ведешь речь.
>без GC
Ну давай, поясни мне за то, почему гц - зло вне зависимости от контекста.
Любая софтина, требующая риалтайма (риалтайм — работа за константное время, чтобы и до сюда не доёбывался) и вытекающих из него требований к перформансу. От игрушек и обработки аудио/видео/изображений до майнинга биткоинов и прочего прогрева железа.
>Ну давай, поясни мне за то, почему гц - зло вне зависимости от контекста.
Не перепрыгивай, у плюсов виден контекст использования. Я же не говорю писать то говнище что клепают на вордпресса и спрингах на плюсах, там с этим всё ок.
То-то кресты даже близко к системного программированию не подпускают. В то же время няшная сишке уже 50 лет замену найти пытаются. Прикрутить бы в си хотя бы неймспейсы - вообще идеальный язык будет.
Их не используют в системном программировании из-за, барабанная дробь... ABI. Хотя смотря что ты под этим понимаешь, например в понимании Пуйка это более чем системный язык.
Почему не может? Может оно работать, тебе комплиятор лишь предупреждение выдает (обычно).
Если говорить о хай-перформанс приложениях, то да, ты прав.
>Прикрутить бы в си хотя бы неймспейсы - вообще идеальный язык будет.
Братишка, я тебе Oberon принес, там есть модули! А еще ссылки, да с такими-то нуллами!
А нахуй ему это? Он регистры сложил в кучку, rsp/rbp передвинул - ему заебись. Ты переменные на стеке создал - ты за них и отвечаешь.
new std::string(Указатель, Размер);
Ну или то же самое со string_view, если стандартная строка скопирует.
Потому что это не D, тут хуй тебе а не удобство.
Просто это хуйня унаследованная с си ещё со времён, когда не инициализировав кусок памяти на стёке можно было что-то выиграть.
Отбой, невнимательно прочитал.
Говна было бы раз в 8 меньше, но если бы он так же хаотично развивался 30 лет — его всё равно было бы очень много.
VC++ 14
Надо читать абсолютно все книги.
Разве что на другие темы, прошлые издания этой не обязательно.
Именно потому что она не для новичков там не обязательно разжевывать всё за тебя и в рот класть.
Это вопрос к гуглу "как узнать имя процесса API твоя система нейм", а не для крестотреда.
Если бы до этого не искал, не спрашивал бы. Там дичь какая то на 15-30 строк просто чтобы узнать имя процесса. Я думал может есть функция сделатьЗаебись()
>>1003430
У меня просто пр int ничего не делает ну как. У меня есть n функций void и в main они все поочередности призываются из ада ну ето ф теории а на практике - если ставить void то компилятор выводит ошибку на нем, при int ничего не выдает.
>Чего бля.webm
int main() { //... } это соответствующее стандарту определение, если с ним не работает ищи ошибки в другом месте, но только не здесь.
void main() { //... } не соответствует стандарту, кстати говоря.
Наоборот с крестов лучше, потом вопросов не будет возникать почему это строки это не изменяются а каждый раз создаются в памяти, первое что пришло на ум. На самом деле, зная кресты ты на джаву будешь смотреть свысока (все объекты на куче что за пиздец)
войд мэйн может стать твоей изюминкой. Вот алёна си++ всегда войд пишет и похуй, хейтерс гона хейт.
Чем тебе не нравится дизайн? Всё логично и красиво. Открой руби - говно для петухов.
Меня беспокоит то, что для одной и той же цели в крестах есть много функций. Например тот же std::cout и printf. Не знаю, хорошо это или плохо, но мне кажется, что это все же не очень хорошо.
В плюсах много не самых очевидных моментов и возможностей обосраться на ровном месте, готовься к охуенному времяпрепровождению за разгадыванием загадок почему все не так работает и валится.
Советую сразу читать про то, как процесс выглядит в памяти, хип, стек сегменты. Потом про то, как компилятор располагает объекты в памяти, про storage class. Если ты понял указатели, проблем не возникнет.
Зато потом на эти знания отлично лягут современные плюсы, move semantics, умные указатели, лямбда-хуямбда. И ты никогда больше не сможешь всерьез воспринимать остальные язычки программирования.
>Советую сразу читать про то, как процесс выглядит в памяти, хип, стек сегменты. Потом про то, как компилятор располагает объекты в памяти, про storage class. Если ты понял указатели, проблем не возникнет.
Для программирования на плюсах всё это знать не нужно. Достаточно следовать стандарту.
От знания железа при изучении плюсов может быть больше вреда, чем пользы.
Я не согласен. Все же это некая основа, то, что происходит в действительности на железке.
Без фанатизма, конечно. Низкоуровневые маньяки гипер-оптимизаторы творят страшное, да. Так, ознакомиться хотя бы по диагонали. Тем более, всякие вопросы по размещению объектов любят спрашивать на интервью, или почему плохая идея 10 метров буфера на стеке объявлять.
Вот тут надо понимать, что printf -- это функция из стандартной библиотеки C, а cout -- это средство вывода STL, части С++.
Даже так, cout это объект в iostream, части C++ Standart Library, а STL другая часть.
И такого задротства в стандарте жопой жуй, поэтому кодить "от стандарта" я не представляю как обучиться.
goto stackoverflow
Вот, насри здесь: >>1001445 (OP)
>>1003460
ТРАТИТ РЕГИСТР
>>1003705
Вкатываться нужно с того, что интересно. По большому счёту - похер, с чего, если у тебя встроена защита от синдрома утёнка.
>>1003763
ага а ещё можно написать a+b и b+a и получить одно и то же, что за пиздец
>>1003837
>Достаточно следовать стандарту.
И давно ты осилил и законспектировал 1000 страниц заёбистого английского?
>И давно ты осилил и законспектировал 1000 страниц заёбистого английского?
Ты меня убедил. Следовать стандарту — невозможно. С сегодняшнего дня (точнее, ночи) прекращаю эту бесперспективную деятельность.
>>1003843
В этом то и дело, мне кажется, что смешали две стандартные библиотеки и получили это говно вместо языка.
GC - позор языка.
Так вот что странно. Вот такой код почему-то выдает строку 1D D5 06 84, то есть в порядке bigEndian, хотя должен в littleEndian - 84 06 D5 1D:
uint64_t src = 500500100;
std::cout << "original: " << std::hex << src << std::endl;
Что такое? Ничего не понимаю. Пишу функцию, которая разворачивает байты из littleEndian в bigEndian и теперь вообще запутался где истина.
Endianness касается только хранения в памяти. Когда число попадает в регистр процессора, endianness теряет смысл - теперь это просто число. Хочешь увидеть littleEndian - читай число побайтово через указатели.
Ну и? Все правильно выдает 1DD50684 == 500500100, что тебя удивляет?
Хочешь увидеть порядок байт - выводи побайтово. Еще в студии можно память просматривать, если не ошибаюсь Debug->Windows->Memory.
>>1003953
Погодите, если в памяти число так и содержится, зачем его перегонять через функцию htonl перед отправкой по сети?
Во время отладки в памяти показывает значение 500500100.
Ни одного стоящего вопроса. Одни срачи школьников, лабы, WinAPI и конченные дебiли.
Если ты одну и ту же программу будешь компилировать для архитектур с разной эндианностью.
Будто раньше было иначе. Только перлоанон что-то там спрашивал.
Как будто другие треды на этой доске лучше. Я сюда захожу лишь поржать над неудачниками из ПЕРЕЗВОНИМ-треда.
Я про то, если программа скомпилирована на одном компьютере с little endian, а исполняется на архитектурах с big endian. Стоит ли исходя из этого, переворачивать числа перед их отправкой по сети?
С с++ ты так не сделаешь. Ты не запустишь код, скомпилированный под одну архитектуру на процессоре с совершенно другой архитектурой.
типа
>Ты меня убедил. Есть пищу без сахара — невозможно. С сегодняшнего дня (точнее, ночи) прекращаю эту бесперспективную деятельность.
Или ты не шутил?
Об обратной совместимости с C ты не слышал, видимо.
>что смешали две стандартные библиотеки
>и получили это говно вместо языка.
Тебя кто-то заставляет использовать две библиотеки одновременно? Сообщи в полицию, это незаконно.
>>1003944
>Анон, что скажешь про bigEndian и littleEndian порядки?
Я скажу, что ты должен использовать htons/ntols.. и аналоги. Никакая часть стандарта языка не зависит от endianness.
>std::hex
Число в base16, это тебе не байтоёбство.
>>1004018
Тогда это учтено в htons (и аналогах для твоей имплементации).
>>1004022
В некоторых архитектурах меняется.
>>1004037
> если программа скомпилирована на одном компьютере с little endian, а исполняется на архитектурах с big endian.
Если ты так изъбнулся, что создал экзешник (в PE и ELF архитектура описана) так, что ещё и впихнул его не на ту архитектуру - ты еблан.
>>1004108
Возвращаю тебя из ссылки, хоть я и не ссылал тебя.
И если ты пишешь на bare metal, и твоя архитектура позволяет менять порядок байт, и ты его не выставил таким, который тебе нужен - ты тоже еблан.
>Об обратной совместимости с C ты не слышал, видимо.
Слышал, и мне показалось, что она не нужна.
>Тебя кто-то заставляет использовать две библиотеки одновременно?
Меня сам язык заставляет это делать, ведь даже С++ код тянет за собой кучу сишных зависимостей.
>Меня сам язык заставляет это делать,
Пример в студию.
>ведь даже С++ код тянет за собой кучу сишных зависимостей.
Любой компилируемый язык может тянуть glibc, если его библиотека написана с сишными функциями (и кучу других зависимостей из ОС, в том числе несовместимых с предыдущими версиями ОС). Тебя это вообще не касается.
>Любой компилируемый язык может тянуть glibc, если его библиотека написана с сишными функциями (и кучу других зависимостей из ОС, в том числе несовместимых с предыдущими версиями ОС).
Вот это меня очень сильно и беспокоит.
Я считаю, что каждая функция в компилируемом языке должна быть написана с нуля, не используя никакого сишного говна.
Пиши на bare metal на ассемблере, мань. В любом коде, который ты пишешь, будет неявно использован код на C или ассемблерная вставка, компилятор тоже C иногда использует и кучу вставок на ассемблере, правильность которых не доказана. В микрокоде ЦП тоже ошибки находят. А ещё биты в памяти переворачиваются.
Язык у него виноват, видите ли.
И ещё ты проверил весь написанный на C++ без использования сишной либы человечеством код, и там нет ни единой ошибки, ни единого reinterpret_cast-а, и стандарт математически доказал верно ведь?
Есть вот такой вот код, который моделирует функцию, заданную с погрешностью: https://pastebin.com/BECUPfrV
Для него необходимо прописать функцию, которая при изменении delta и m будет "выбросы" сглаживать.
Есть теоретическая подводка к тому, что нужно сделать, см. пик номер 1.
По сути нужно запрограммировать 7-й пункт с учетом пункта 5 и 6.
Под это дело получился вот такой вот код: https://pastebin.com/Qm66G1yz
Суть проблемы заключается в том, что проверка (строки с 54 по 77) либо считается неправильно, либо я долбоеб.
Также если вдруг кто подскажет как посчитать alpha=alpha(delta).
вот в том то и беда, что типа берется отрезок, и его надо поделить на m частей с шагом 2alpha/m
В итоге он почти половину значений дает не найденых. Подсчет ручками говорит что вроде все правильно, но тогда функция должна считаться только по одной точке что-ли
Ну вот если бы ты на ideone полностью рабочую систему скинул, то я бы ещё посидел. А так настраивать это всё не охота.
Делаю скрин того что выводит на данный момент с данными
m=10
delta=0.004
delta=0.008
На выходе:
x - это разбиение в зависимости от h
A - это рандомное число
f(x) - это по иксу
f_del2 - это значения функции с погрешностью
Дальше берется отрезок который под пунктом 6, проверяем его на попадание в [0,1], если попадает - то считаем пункт 7 с учетом пункта 6 из пика (который фотка). Если не попадает, то считаем только то, что попадает в [0,1].
То что последняя функция T_alpha дает такие ебические значения, которые точно в [0,1] не попадают, то что с пятой итерации уходит по сути в нуль, но тут скорее всего вот тот момент что alpha=alpha(delta), то есть альфа сама по себе зависит от дельты. Как сказал научник, альфа по сути это "дельта в какой-то степени". Что це значит, моя не понимать.
В моем случае 0.0016 - это шаг разбиения вот этого отрезка который проверяем, это h1.
На нем и должна считаться функция, которая выбросы вот с этого пика должна сглаживать и приближать к первоначальной
Сейчас получается все работает правильно и просто проблема в этой альфе?
std::shared_ptr<Foo> a;
std::shared_ptr<const Foo> b;
b = a;
все равно спасибо что попытался
Просто пройдись стэком от одной скобки к другой. Закидываешь в стэк если скобка открывающаяся, удаляешь из стека если закрывающаяся. Если стек пустой, останавливаешься. Все, изи епт. Если идешь обратно, то все наоборот. Я бы тебе даже код скинул, но я с телефона.
добавить константность к самому указателю и проинициализировать во время создания.
http://ideone.com/faBlu7
Сап, аноны!
Я подозреваю, что в треде присутствуют работающие господа, поэтому адресую свой вопрос прежде всего им. Есть ли шанс вкатиться к вам после работы веб макакой (фронт и бек), при отсутствии технической вышки?
Обучаемый, могу в ООП, 25 лвл.
Написать свою хеш-функцию и кешировать, как блять.
Или использовать std::hash — есть имплементацию для всех примитивов и некоторых стандартных контейнеров стд, в том числе строк.
Но мне же не просто два куска байт на совпадение проверить, мне нужно криптостойкое хэширование. Вроде bcrypt и подобных алгоритмов.
Тогда тащить всякие сторонние библиотеки, вроде botan или си-говнеца которое точно везде есть, на О начинается. Ну или использовать любой фреймворк вроде qt/folly.
Привыкни, в крестах из коробки есть только хай в виде UB. И вечно кривых строк.
Так я про библиотеки и говорю. Но я сумел найти только http://www.openwall.com/crypt/ которая использует всякие #include <sys/time.h>. Даже в сраном C# с этим говном легче. Складывается впечатление, что я - первый человек на земле, который решил захэшировать пароль на C++ с Винды.
Это выглядит как то, что мне нужно. Даже с излишком, учитывая, что у меня уже подключен OpenSSL. Спасибо, анон!
Ну, по большому счёту ты из свой области (я так понимаю у тебя есть какой-то опыт работы) решил просто взять и съебать в абсолютно другую, где будешь с нуля начинать со всеми вкатывающимися валенками.
Отвечая на первый вопрос — похуй на умение в ООП, это не джава, тут надо уметь костыли городить. Шансы есть всегда.
>>1004631
<3
Тут ваш сородич за 10ку работать готов. Все плюсовики настолько ущербны?
https://www.youtube.com/watch?v=bn4MTzP0d5Q
жс-бог получаю 80к
>Среда Visual C++ соответствует стандарту языка C++ 2003 г. со следующими главными исключениями: двухэтапный поиск по имени, спецификация исключений и экспорт. Кроме того, Visual C++ поддерживает несколько функций C++0x, например лямбда-выражения, ключевое слово auto, static_assert, ссылки на правосторонние значения и внешние шаблоны.
Можно ли будет потом перекатиться в более свежие версии стандарта без слишком сильной анальной боли? И как вообще вкатываться в них, брать и просто и без задней мысли читать спецификации?
Если тебя прут всякие треды, всякие std::enable_if, то прошу пожаловать к шалашу
>std::enable_if
>template <class T> typename std::enable_if<std::is_integral<T>::value, bool>::type s_odd (T i) {return bool(i%2);}
а в нормальном языке просто
>bool someHuita(T)(T i) if(isIntegral!T) {return I % 2; }
В Интернете.
https://pastebin.com/LUNZP5Sw
Разбиваешь слово на тетрады в отдельных переменных оператором И, собираешь как надо операторами ИЛИ и сдвига.
Я просто думаю, что незачем писать что-то заново, когда можно пару строчек исправить, только что конкретно исправить? Я в байтоёбстве не силен, для меня всё это непонятно.
Значит ты слишком ленивый для программирования. Не мучай себя и других, найди занятие по душе.
"configure.py --cc=msvc --minimized-build --enable-modules bcrypt,auto_rng,system_rng,sha2_32 --amalgamation"
В роли параметров конфигурации. Сначала выпало пару ошибок про std::min/max, которые я поправил, а вот с ошибками линковки сложнее.
botan_all.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp_CryptAcquireContextA в функции "public: __cdecl Botan::`anonymous namespace'::System_RNG_Impl::System_RNG_Impl(void)" (??0System_RNG_Impl@?A0x704a5e4b@Botan@@QEAA@XZ)
botan_all.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp_CryptReleaseContext в функции "public: virtual __cdecl Botan::`anonymous namespace'::System_RNG_Impl::~System_RNG_Impl(void)" (??1System_RNG_Impl@?A0x704a5e4b@Botan@@UEAA@XZ)
botan_all.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp_CryptGenRandom в функции "public: virtual void __cdecl Botan::`anonymous namespace'::System_RNG_Impl::add_entropy(unsigned char const * const,unsigned __int64)" (?add_entropy@System_RNG_Impl@?A0x704a5e4b@Botan@@UEAAXQEBE_K@Z)
.\botan.dll : fatal error LNK1120: неразрешенных внешних элементов: 3
Судя по всему, проблема в crypt32.lib - виндовой(и не только) библиотеке, в которой расположены эти потерянные функции. Я пробовал дописать /DEFAULTLIB:crypt32.lib к команде линковщика, пробовал вставить #pragma comment(lib, "crypt32.lib") в botan_all.cpp, но ничего не помогло.
Использовать си, а не приплюснутый си. Какие, нахуй, bind, ты ебанулся, крестух?
А что ты делаешь в крестотреде? Я помню тут был чистенько-си тредик специально для таких как ты.
Я сюда не язык выбирать пришел, а решить проблему.
>>template <class T> typename std::enable_if<std::is_integral<T>::value, bool>::type s_odd (T i) {return bool(i%2);}
template <class T> std::enable_if_t<std::is_integral_v<T>, bool> s_odd (T i) {return bool(i%2);}
Нет. У меня всё собирается.
Или видео курс какой-то.
Всё равно очень зашумленное говнище по сравнению с D.
Благодарю!
спасибо, посмотрю
Напиши чятик красивый и бота для него.
Я не могу понять от чего берется остаток от деления.
смотри, в тот же unsigned char пишешь 300, он запишет 44, так как 300 % 256 == 44
вроде понятно описано, хз
От значения, которое ты хочешь присвоить.
Так, скажем,
unsigned char a = 323;
в итоге будет содержать число 67.
почему же? есть примитивное правило - прибавляй 256 до наименьшего положительного, оно и будет искомым например, -1 + 256 = 255, -267 + 256*2 = 245
Спасибо, не знал о таком правиле.
Кстати заметил, что почему-то кресты не умеют в правильное взятие остатка или я дебил?, а питон умеет.
Как-то исправить можно (кроме как прибавлять 256 перед любым действием)? Весьма неудобная фича.
я не особо эксперт в этом, но первое, что приходит на ум - либо вычитать полученное из модуля типо int a = -1 % 256; if (a<0) a=256+a;, либо кастить к чему-то беззнаковому
из математики - то, что берется по модулю, должно быть от 0 включительно до модуля не включительно в данном случае - от 0 до 255
бамп же :с
Поздравляю вас, господин соврамши.
> If both operands are nonnegative then the remainder is nonnegative; if not, the sign of the remainder is implementation-defined.
Ах да, эти implemetation defined отличия.
>>1005119
С какого хуя? В теории чисел просто смотрят класс вычетов по модулю, а какой там знак - похуй.
хз, если класс вычетов, то и будет только положительное
Как добавить библиотеку Google Test к VS? Я пробовал чере NuGet, кучу ошибок.
У меня float f = 5.23762, а я хочу f = 5.24.
Только не вывести в таком формате, а именно сохранить. printf не нужен
Клуб анонимных алкоголиков: >>1001445 (OP)
>>1005200
Динамический куб. Никогда не понимал, честно говоря, этих изъёбств. Почему нельзя добавить в STL линеаризацию на ОДНОМ указателе с помощью оператора[]?
>>1005210
Строго говоря: никак, двоичное представление не может гарантированно точно выразить десятичную дробь. Можешь попробовать:
float precisionMulti=100; //для твоего примера
val=std:round(val*precisionMulti)/precisionMulti;;
Можешь потерять несколько верхних двоичных разрядов у очень больших чисел. Если изъебнуться, можно и это побороть.
>setbasechanges the base used for integer I/O
Джва года ждал!
>Sets the numeric base of the stream.
Дайте джве!
>Values of base other than 8, 10, or 16 reset basefield to zero, which corresponds to decimal output and prefix-dependent input.
Ах ты, сука, иди сюда, мать твою!
Конвертируй в строку, там отрезай несколько символов, и обратно во float.
Вывести в строку, sprintf
В компиляторах уже почти всё реализовали.
Написал класс, но не могу перегрузить операторы ">>" и "+". Не подскажете, что я делаю не так? Заранее благодарен
Код здесь:
http://ideone.com/aUP0U4
У тебя оператор "+" возвращает объект класса "land", значит, внутри надо вызывать "new".
Да и внутри ">>" наверное тоже.
Не исключено, но оператор сложения у меня даже не компилится, выдавая ошибку "error: 'land operator+(int)' must have an argument of class or enumerated type|"
Используй decimal для хранения данных (только в стандарте его нет, лел, ну и пиздос, азазаз). Если хочешь выводить в поток есть такой манипулятор с названием std::setprecision, который указывает, сколько знаков после запятой должно выводиться для числа с плавающей запятой.
Ну и там, уже очевидно:
>> std::string s;
>> std::stringstream dummy(s, std::ios::in);
>> dummy << std::setprecision(2) << 2.3345f;
>> // заебися!
Стандарт все еще без порядка следования байтов в STL, просто охуительно. Библиотека нищенок...
Ну хотя бы constexpr if породили, спасибо, теперь будет меньше мозгоебства (хотя стандарт начнуть применять и того позже, а если вспомнить про такую замечательную штуку, как CUDA, так года через 2 только).
А ты думал, кому ты нахуй нужен, нихуя не умеющий, да еще и не на полный день?
Ну охуеть теперь, и как вкатываться вообще? Или всем теперь в веб-макакинг идти?
>>1004199
графиковый кун снова на связи.
Заставил я это дерьмо работать, однако появилась другая проблема: он считает и суммирует все как нужно, но, сука, неправильно.
В большом цикле - проверка на попадание разделения отрезка на x-alpha и x+alpha. В цикле же T_alpha должна считать сумму смоделированной функции в каждом шаге разбиения маленького отрезка. Он это вроде бы делает, но значения должен меньше чем f_del2, но и не отрицательные. Может я где-то проебался глазами и не тот индекс поставил?
Анон, выручай!
https://ideone.com/k5vfOF - проект на ideone, картинка с новыми данными в пикрелейтед
изначально идет pow(1,i), но так как в этом куске считаем по "малому разбиению", то счетчик по g идет, и поэтому по g и считать
Во-первых, дохуя народу с налом а не кредитками.
Во-вторых, многие предпочитают попиздеть "а чо посоветуете?".
В-третьих, еду всё равно готовят и раздают человеки.
ты можешь пояснить что тебе не нравится, если pow (1, i) нормально, а pow (1, g) нет?
Да, потому что это моделирование функции с погрешностью. В каждом шаге малого разбиения.
В частности, вот тебе пожалуйста формула даже моделирования. Ниже, где этой единицы нет, искусственно возмущаем с помощью N
И что? Ты как не возводи 1 в степень, у тебя только 1 в итоге будет.
Если ты возводишь -1 в целочисленную степень (а по-другому и быть не может), тогда тебе проще проверить четен ли индекс и уже подобрать множитель. И если ты хотя бы чуточку знал, что из себя представляет float (IEEE 754), и как работает процессор, когда возводит число в степень, ты бы такой хуйней заниматься не стал (вот, к примеру https://stackoverflow.com/questions/4638473/how-to-powreal-real-in-x86)
Подсказка проверки четности, самое быстрое:
>> bool isEven(const int x) { return x & 1 == 0; }
А куда дальше плясать с этим кубом?
Допустим нашел я его в коде создания поля для сапера, нахер он там упал?
в том то и дело, что возвожу не в целую степень, а в i. Там значения все, кроме последнего, меньше 1
За такой код надо палкой пиздить. Во всем этом говне даже разбираться не хочется. При беглом просмотре: отучись использовать директиву using, там где надо использовать стандартную функцию pow, лучше писать std::pow. Также прочитай про функцию rand (так, как ты написал, она всегда будет выдавать значение 41). Больше нет сил читать это.
Столкнулся с какой-то хуитой.
Решил подучить цаплю и набросал проект динамической либы в кодоблоках, прожеватор — mingw-w64, примерно gcc5, что ли, режим c++14 и всё такое.
Так вот, надрочил пару классов и всё вроде хорошо, но при попытке использовать один из классов в программке почему-то получаю ошибку
>undefined reference to _imp___ZN7Либа7КлассD1Ev'
//декораторы могут отличаться
, указывающую на конструктор + ещё примерно два похожих срабатывания туда же. При этом ошибка исчезает, если реализацию деструктора (там delete в цикле + очистка списка) перенести из исходников в заголовочный файл.
Схожу с ума, кароч. Логика в заголовочном файле — всё ок. Переношу в исходники — либа собирается, но хостовая прога не хочет.
спасибо за охуительный юмор. Видимо, контингент данного треда полон таких. Алсо, мне даже похуй на оплату, опыт первоочереден. Но нет, тебе надо свои охуительные шутейки вставить
Фейсбук, к примеру.
Либа линкуется криво, декорация хромает. Я не спец по гцц, больше сказать не могу.
>>1005782
Уходи.
А теперь убери весь свой словесный понос, и перепиши пост нормально.
Извини, если обидел, но код не мой, а разобраться что тут происходит надо мне, я плюсы эти третий день вижу
Ну я понял, что код не твой. Я просто поржал над тем, как человек демонстрирует свои скиллы (где не надо, естественно).
Не по адресу даже.
>Допустим нашел я его в коде создания поля для сапера, нахер он там упал?
Двумерный массив (двё звёздочки) байтоёбства (ещё одна, и того три), так тоже бывает. Иногда людям принципиально надо не объектами манипулировать, а ссылками на них.
на что сменить компилятор? Ось сменить проблемно, пишу на калькуляторе с умершей видеокартой
А переводчик использовать уже запретили, да?!
У тебя отладчика нету для Intel C Compiler, маня. Скорее всего, gdb, подойдет, но тут хуй знает, никогда с интелом дела не имел.
Только на заголовках.
Да, это действительно проблема линкера.
Починил проблему линковкой libmylib.a (указал до неё путь и добавил -lmylib в параметры), теперь вроде всё норм.
Спасибо, ананас.
Вот только GDB у меня и стоит, проверил в настройках. Всё равно не может найти его путь и ипользовать. Нихуя не понимаю, сорре, всю жизнь работал в VS как обезьяна. Таки откуда взять эту срань? Ошибка не исчезает и если меняешь Intel на обычный GNU
>Ошибка не исчезает и если меняешь Intel на обычный GNU
Значит дело не в том, что компилятор от Intel, как это пытаются местные маньки выставить. Вообще формат отладочной инфы давно стандартизирован и ICC выдаёт инфу в нём.
CodeBlocks не IDE потому что. Поставь QtCreator как вот этот >>1005877 господин говорит и не еби мозги ни себе ни другим, если не смог разобраться.
Если не дурачок, то можешь прямо с консоли отлаживать, GDB прекрасно справляется даже с самыми изощренными запросами.
Или поставь себе CLion и, как в случае с QtCreator, забудешь о проблемах с отладкой (зато будут другие проблемы).
>CodeBlocks не IDE
Вполне даже IDE и без анальной зависимости от господина. Хотя глюки и надобность крутить настройки вполне могут заебать привыкших к последней VS.
А ведь есть ещё CodeLite, Anjuta, KDevelop.
Правда, хипсторам не объяснишь, у них или кути головного мозга или джетбрэйнсопроктит.
нет
Нихуя, QtCreator - свободная от Qt IDE.
даже если и нет. Хотя, может все от того, что я еле дотягиваю до джуна
алсо, какие есть нормальные ide-подобия? clion? нет, спасибо. Kdevelop разве что
>> Kdevelop
Ты с гор слез что ли?!
Если так, то под линуксом ни одной идеально рабочей IDE нет, вот уж извините, но QtCreator не дотягивает до полноценной IDE, потому что многих жизненно необходимых фич, типо рефакторинга (не просто переименования, а изменения объявления и т.д.) в ней нет. CLion сильно глючный и очень тормозной, очень... При проекте 400kloc и примерно 20 подпроектами он лагает люто и притом баги валятся с незавидной постоянностью.
Ну, если ты собираешься пилить что-то по мелочи, то и QtCreator'а тебе будет за глаза.
>CLion сильно глючный и очень тормозной, очень... При проекте 400kloc и примерно 20 подпроектами он лагает люто и притом баги валятся с незавидной постоянностью.
Прямо как решарпер в моём цесаркином студенчестве. Тогда писал на цесарке и хуел с того, как у коллег тупит это малополезное поделие.
Жетбрэйнс те ещё индусы.
>Прямо как решарпер в моём цесаркином студенчестве. Тогда писал на цесарке и хуел с того, как у коллег тупит это малополезное поделие.
Решарпер и сейчас пиздец как тормозит всю студию. Оттого то я и в одно время перелез на Visual Assist X, который тоже вполне неплох но гораздо быстрее и обладает более гибкими сниппетами (у решарпера они просто уебищные). Ну, как говорится, managed code не тормозит, да ведь?!
Вывод - пользоваться creator-ом и радоваться? Или есть что-то интересное помимо него?
У меня под линупсом CLion. Под виндой и студия и CLion (да, я ебанат, но редактор IntelliJ мне очень нравится своим функционалом, хотя он и глючный)
Ну если глянуть на стек вызовов, то там да, он в такую кашу раскручивается. Кто-то явно переел паттернов, но, я как понимаю, это все в угоду гибкости и масштабируемости IDE сделано, поэтому такое месиво.
Самая забава в том, что в некоторые моменты CLion начинает сжирать по 2.5 гига памяти, и потом потребление падает до 600 мегабайт.
Патерномакаки — бич мира разработки.
Как из «я придумал такой подход и для конкретных случаев иногда он неплох» можно было вывести «любой ценой реализовать как можно больше паттернов не вникая в суть» — не понимаю, но джавистам за заражение нормальных людей спасибо.
CodeBlocks отличный вариант для ньюфага потому что там очень крутые галочки для компилера и линкера. Я с 2011 года пишу на С++ и многих флагов для GCC не знаю, а там всё можно мышкой потыкать. В QtCreator ненужный qmake либо кривая поддержка CMake (работать можно, но не ньюфагу разбираться с тонкостями костыльной поддержки CMake проектов).
Пффф, ни на кодоблоках, ни на кодолайте, ни на девсиси не пришлось ни разу возиться с *make.
Вообще ни разу.
Хотя девсиси может выбрасывать там ошибки, но это обычно к месту даже.
CMake в любом случае понадобится чтобы проект можно было распространять и собирать где угодно, а также открывать в любой IDE, он из коробки может транслироваться в разные файлы проектов, а если чего нет то можно найти в интернете.
Типичная ошибка новичка.
Хотя и странно, что файлы определений для библиотеки имеют расширение .a, а не .lib.
Спасибо, а как мне найти в коде, где он обращается к ссылкам, если я больше нигде в когда не нашел трех звездочек?
GCC же, а не MSVC.
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1006097.html (М)
ахахахахаха, ты аж джун, ох лол, вот петуч. ну ты дядя.
мимо машинный кодер-стажёр 10034ш39498292357287598г89ц4не34н38954г8 кккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккккк в атомную единицу времени.
Это копия, сохраненная 28 июня 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.