Всем день добрый. Как добавить новое интовое число? Хочу чтобы ABRACADABRA тоже была инт. Разумеется никаких вычислений с ней не будет, это просто число возвращаемое функцией, если результат работы не получен.
Всем привет. У меня есть очередь, состоящую из объектов класса classA, которую нужно заполнить из файла при инициализации. Я использую динамический массив, но не могу разобраться до конца как это делать, помогите пожалуйста
Делаешь пандорический захват, лифтишь в монаду, потом строишь рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм) как монадический трансформер из категории эндофункторов, и метациклически вычисляешь результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут.
>>892503 Ну вот написал такую шнягу, но она не работает
Ошибка Выражение должно быть допустимым для изменения левосторонним значением для строки (mas + l sizeof(classA)) = new classA (name, p); Ниже приведен код заполенения очереди из файла static classA mas; static int l = 0; ifstream f("gs.txt"); if (f) { while (!f.eof()) { f >> p >> name; (mas + l sizeof(classA)) = new classA (name, p); this->add(mas + l sizeof(classA*)); l++; } } else cout << "Ошибка"; }
>>892525 Я описал динамический массив, но как-то неправильно. Прошу помощи в поиске ошибки и ее исправлении, а не в совершенно ином решении, которое мне не нужно.
>>892536 mas - по идее указывает на 0 объект массива mas +l звездочка sizeof(classAзвездочка) - на l-ый объект массива. В приведенной строке кода я создаю объект и записываю указатель на него в l-ую ячейку памяти
Сап. Нужно посчитать количество двухбуквенных слов в строке. Я тут кое-что накалякал, разбил строку на слова, сравнил их длину с двойкой в ассемблерной вставке(без неё нельзя, задание такое.) А как эти самые слова дальше посчитать я не понимаю. В с++ абсолютный ноль, прошу помощи. http://pastebin.com/ed5JHXUx
>>892510 >>892510 Исправлю-ка ошибку static classA звездочка mas; static int l = 0; ifstream f("gs.txt"); if (f) { while (!f.eof()) { f >> p >> name; (mas + l ) = new classA (name, p); this->add(mas + l ); l++; } } }
>>892551 Я и пытаюсь написать свой динамический массив, но у меня проблемы,которые я не могу решить. Пришел сюда спросить совета , а мне в ответ "напиши свой контейнер")) Цирк
В общем, вот что имею в итоге: static classA mas; mas = new classA[]; static int l = 0; ifstream f("gs.txt"); if (f) { while (!f.eof()) { f >> p >> name; mas[l] = new classA(name, p); mas[l]->getNumber(); this->add(mas[l]); l++; } }
При компиляции ошибка: размер массива должен быть указан в новых выражениях. Как можно это исправить? Ругается на new classA[]
>>892558 static classA звездочка звездочка mas; mas = new classA звездочка []; static int l = 0; ifstream f("gs.txt"); if (f) { while (!f.eof()) { f >> p >> name; mas[l] = new classA(name, p); mas[l]->getNumber(); this->add(mas[l]); l++; } }
При компиляции ошибка: размер массива должен быть указан в новых выражениях. Как можно это исправить? Ругается на new classA звездочка []
>>892564 В любом случае ты должен указать количество элементов. Динамический массив называется динамическим, потому что создается во время выполнения, а не растягивается. Если ты захочешь увеличить область памяти - нужно выделить новую, старое туда скопировать, и затем старую область памяти освободить.
>>892590 блять, забыл в деструкторе память почистить, но сделай это за меня. алсо, можно припереть сюда перемещающие и копирующие конструкторы и присваивания, если желание есть
>>892564 Ты, по моему, хуйню какую-то делаешь. Возможно я чего-то не понимаю, но вот, как все это выглядит: ты пытаешься создать динамический массив, то есть массив, который может там расширяться-сужаться, сальтухи мутить. Это нужно в случаях, когда ты не знаешь конечного размера этого массива и все зависит от входных данных (в них, естественно тоже нигде размер не записан и тебе тупо надо считывать, пока ты не дойдешь до конца). И вот ты говоришь программе найти тебе какой-нибудь указатель в памяти (static classA mas) и дальше сохраняешь свои элементы один за другим, начиная с этой позиции ((mas + l sizeof(classA)) = new classA (name, p)). Я, чесно говоря, заебусь описывать все ошибки, которые ты допустил в своем подходе. Но из основных: на с++, как впрочем и на любых других языках, создать идеальный динамический массив просто не возможно. Это объясняется тем, что память представляет собой что-то вроде большой строки, рандомные отрезки, которой бронируются компьютером для хранения в них данных (например, когда твоя программа просит выделить ей память). И, если мы, как и ты, будем просить компьютер найти нам какое-то место в этой памяти, а потом записывать туда даные, одни за другими, то мы обязательно, рано или поздно, наткнемся на уже занятую часть строки и начнем там творить невъебенную такую ахинею (это не учитывая еще много других пиздецов, которые непременно случатся при таких действиях). Все это является базовыми знаниями, без которых человека не следует вообще подпускать к с++ или не учить их работать с динамической памятью. Очень удивлен, что ты ими не обладаешь. Ну а для того, чтобы все-таки реализовать эти "динамические массивы" используют либо стэки, либо вектора, либо, возможно, много чего еще. Тебе советую воспользоваться вторым методом
Лабодаун на связи. Отличается ли чем-нибудь вызов функции от вызова метода? Меня пытались убедить в том, что вызов метода намного медленнее. Но, если это так, то почему? Запихивание this в ecx (для x86) перед вызовом метода не намного же уменьшит скорость
Аноны, я совсем ничего не понимаю. http://pastebin.com/rsjVwLKQ http://pastebin.com/GwbhB9Kf Это вот энто дело http://www.adp-gmbh.ch/cpp/common/base64.html, типо декодер base64. Делаем так: std::string str = "0JTQstCw0Ycu"; std::string decoded = Base64::Decode(str); Выхлоп: (.text+0x53a): undefined reference to `Alice::Base64::Decode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' collect2: ошибка: выполнение ld завершилось с кодом возврата 1 Вопрос: где он нашел еще два параметра у функции, когда в хедере и в самом cpp их всего по одному?
>>893217 >в справочниках по ссылке только 2 книги Страуса С тобой всё в порядке? я когда переносил шапку конечно думал что будут сложности, но что придётся учить читать кого-то точно не думал.
Подскажите, каким образом писать модульные приложения, чтобы была некая оболочка, которая могла скачивать плагины для себя. А также обновлять их. Может есть какие-то книги, тэги по этой теме.
Аноны, каким образом можно сослаться в реализации метода на самого себя? Т.е. есть, например, метод world->Draw(world,1); Семантически выглядит не очень. Дублирование world как-то не в тему.
Анон, как вывести контейнер multimap с конца? Этот кусок говнокода не работает, хотя при выведении с начала (.begin(); .end(); ++)всё ок. multimap<unsigned int, string>::iterator curItem; for (curItem = sortedDict.end(); curItem != sortedDict.begin(); curItem--) file << (curItem).first << " : " << (curItem).second << endl; sortedDict соответственно мультимапа
>>893648 Треды есть, библиотеки есть. Работает на сперме прекрасно, но чтобы накатить сам компилятор с окружением нужно хорошо потрахаться, есть такое.
ИРЛ используется побольше чем хачкель кстати, лол.
>>893651 Да нет, яву уже довели до состояния когда можно работать на нормальном домашнем процессоре. И мейнфреймы у них кстати оверпрайснутое гуано. >>893650 Синтаксис. Можно подрочить на него, можно описать парсер в 10 строк который на других языках займёт несколько сотен, можно сделать парсер метапарадигм.
>>893689 > окемл не навязывает никакой парадигмы как и плюсы И как можно видеть на примере C++ и кокамла — "мультипарадигменность" работает плохо. Как и мультикультурализм.
>>894019 Шапку открой. >>894015 Забавно от пейсателя кластеров мультипарадигм на хаскелях слышать что-то про "работает плохо", когда мир программирования поделен на мультипарадигменные и несуществующие языки.
>>893641 >Хачкель хороший язык. Но иногда слишком медленный. Хочешь делать системые ультрахайлоад приложения с байтоебством вроде движка БД или 10K сервиса - бери pure C и\или Erlang, хочешь делать прикладуху с кучей высокоуровневой бизнес-логики - бери Хаскель и не парь себе мозг байтоебством. Всякие там common языки вроде сиплюсов, жавы и сисярпа - суть одно и то же, неудачная попытка скрестить ужа с ежом, причем непонятно зачем.
>>894305 Почему для бизнес-логики ты выбрал Хаскель, а не ООП на плюсах, например? И у перечисленных тобой common языков, хотя бы нормальные IDE завезли c профилировщиками и групповой работой.
>>894403 >не ООП Я описываю процессы, а не объекты. >на плюсах Надо уделять слишком много времени\внимания различным низкоуровневым аспектам. И даже при это велик риск получить ошибки на продакшене. Хаскель же часть ошибок исключает как класс, часть позволяет обнаружить на этапе компиляции, короче если и будет ошибка на продакшене - то скорей всего это будет архитектурная ошибка алгоритма, но не ошибка реализации данного алгоритма. >хотя бы нормальные IDE завезли Да, с этим беда >c профилировщиками GHC имеет профилировщик >групповой работой К языку это тащемта отношения не имеет.
>>894457 В хаскеле нужно извернуть мозги через зад в рот. Не надо ляля, его система типов с чистотой и траляля создаёт ещё больше проблем чем решает, а поиск утечки с его ленивостью повеселее чем в плюсах. При этом писать негде, тулкитов нету, библиотек относительно плюсов нету, тормозит как залупа (а мы сравниваем с плюсами, которые бегают на уровне си). Будь то опенсорс/коммерческий проект — программистов для него ты не найдёшь.
Вот какой смысл его брать, кроме как подрочить на крутые фичи?
>>894464 >В хаскеле нужно извернуть мозги через зад в рот. Ты наверно имел в виду в целом ФП? >система типов с чистотой и траляля создаёт ещё больше проблем Какие? >а поиск утечки с его ленивостью Есть профилировщик хепа. >При этом писать негде Выше писал, да с IDE проблемы. >тулкитов нету Есть >библиотек относительно плюсов нету Ну если бы ты про Erlang так сказал - прокатило бы >тормозит как залупа Я выше писал - для хайлода бери pure С. Для прикладных приложений гораздо важней высокая доступность. А проблемы производительность куда проще решаются горизонтальным масштабированием. >>894468 >Хаскель мне даст хотя бы приблизительный перформанс? Приблизительный к чему и перфоманс в чем?
>>894487 Что такое? У нас новый пуревасикдовн у которого конструкторы тормозят? >>894494 >Какие? Ну ты открой фп тред, посмотри как там писали najtiElementVMassive подсчёт высоты бинарного дерева. Хороший, годный язык. >Ну если бы ты про Erlang так сказал - прокатило бы Про хаскель тоже прокатит. Или у него библиотек уже как у плюсов? вместе с си. >для хайлода бери pure С Да нахуя мне твой веб. Нету в вебе понятия "хайлоад" пока ты не гугл/фейсбук. А когда ты гугл — начинаются плюсы где-то у первых был пейпер как это им экономит миллионы. Вот мне нужно в риалтайме распознавать изображение/выводить йоба-картинку/сделать ин-мемори бд/и тд — мне хаскель сильно поможет? и зачем мне вообще он когда на дворе есть питоны и прочее?
Так же не понятно зачем оно мне при написании верхнего уровня — есть варианты от питона до жвм языков, которые делают хаскель по всем параметрам ах да — твой круд же типобезопасный! Теперь-то заживём!
Алсо, у меня есть опыт поддержки проекта на няшной. И плюсовой код поддерживать несравнимо легче. инб4: кококо 10 этажей шаблонов — в плюсах можно спокойно писать без них, а вот в си такие проблемы не решаются без 10 этажей макросов или еще лучше — кодогенератором сверху.
>>894487 >>894494 Не понимаю, как можно в 2016 писать что-то сложное, как хайлоад на Си. Это бред полнейший. Зачем жертвовать гибкостью и безопасностью ради 1% ускорения?
>>894547 >как там писали подсчёт высоты бинарного дерева. Открыл. Никаких проблем, связанных с чистотой или системой типов, о которых ты говоришь, не увидел. Собственно вообще проблем не увидел. >Или у него библиотек уже как у плюсов? Более 10000 в репозитории. Маловато? >Да нахуя мне твой веб. Не знаю. Я нигде про веб не писал. Ты сам себе что-то придумал и сам себе что-то пояснил. >ин-мемори бд/и тд — мне хаскель сильно поможет? Нет, мой дислексичный падаван, чуть выше я писал, что например для движка БД лучше взять C. Хотя на Хаскеле можно и операционную систему написать. >есть варианты от питона до жвм языков Мультипарадигменное динамикоговно. Нет спасибо. >И плюсовой код поддерживать несравнимо легче. Любишь пердолиться с ромбами? >кококо 10 этажей шаблонов — в плюсах можно спокойно писать без них В плюсах можно спокойно писать и без плюсов. >>894576 >как можно в 2016 писать что-то сложное, как хайлоад на Си. А на чем нужно? Поясни, бро.
>>894588 >Более 10000 в репозитории. Маловато? http://githut.info/ На одну позицию обгоняет Lua. По мне так количество либ уровня Lua это как-то мало.
>>894588 >Мультипарадигменное динамикоговно. Нет спасибо. Вполне симпатичный язык. Ты что из этих? Ну кто дрочит на чистоту и метаобъектные манатки? Это говно без задач.
>>894691 >languages in GitHub >количество либ Понятно. А по мне так количество либо ниже уровня JS тоже как-то мало. Шах и мат. >Это говно без задач. Ну раз на дваче ниосилятор так сказал - ок.
>>894939 Я бы даже сказал, ты потратил весь запас удачи своего рода, который копился в генах твоих предков со времён австралопитеков. Да, ты прав, можешь Роскомнадзор, потому что тебе скоро либо сосуля на голову упадёт, либо даги собьют.
>>895298 >При чем тут конструкторы? О чем ты? Это мемасик от местного персонажа выгнанного отсюда нахуй пол года назад. >подумай что именно может тормозить. Посвяти уж. Не вижу ничего. Виртуальный функции/RTTI/итд — если в си возникает в них потребность работает точно так же, только работы в 5 раз больше. разве что намного реже удаётся избегать лишних аллокаций в контейнерах и при наследовании.
>>895307 Идеология кода несколько иная, очень долго чистим эксепшены вместо обработки сообщений по селекту, очень долго сидим в ядре и ждем пока очередное future настанет вместо форка через пайп с месседжем, дергаем семиэтажные IOC контейнеры и прочие DI конструкции с горой виртуальных вызовов, вместо сишных get_component_handle ( COMPONENT_ID ) - подобных разрешений . Это как пример, таких можно много наковырять. Естественно я не про сфероконя и laba1, а про то как реально эти языки применяются.
>>895315 Ты про сфероконя из мира явы/шарпа по большей части и рассказал. Что нибудь из разряда "тормозящего в языке" а не "тормозящего от ява-энтерпрайз-архитектуры" есть?
>>895336 Ну я потому и написал про сфероконя — не видал я чото бэкэндов с энтерпрайзными архитектурами на плюсах. Повезло видимо.
С другой стороны говорить что язык тормозит только потому что написано "как-то сяк" тоже неправильно. >Как что-то может "тормозить в языке"? Ну ты сам как думаешь?
Язык - это стандарт, стандарт не тормозит. Он бумажный. Тормозят специфические решения свойственные языку. Я выше тебе расписал примеры, если остановиться на чем-то одном: нынешний подход в плюсах к потокам на практике значимо медленнее того, что обычно используется в си. Сравни производительность решения на селекте с коллбеком и RAI решения с future. Естественно в плюсовых проектах используется зачастую первый подход когда появляется необходимость в производительности, но это решение проблемы, а не факт ее отсутствия.
>>895315 > дергаем семиэтажные IOC контейнеры и прочие DI конструкции с горой виртуальных вызовов "IOC" и "DI" можно реализовать и на C (только там вручную и через жопу), и работать они на обоих языках будут с одинаковой производительностью. Такой подход в C++ применяется не сильно чаще, чем в C, и там, где он действительно оправдан. Сейчас мейнстрим разработки и идеология - метапрограммирование и ехал темплейт через темплейт, а не энтерпрайз.
> Сравни производительность решения на селекте с коллбеком и RAI решения с future. Какой селект с коллбеком? При чем здесь RAII? И почему надо сравнивать future, а не, скажем, lock-free структуры данных, если речь идет об организации работы потоков?
>lock-free Это отдельная тема, смысл ее затрагивать? я говорю про специфичные для языков подходы. Я сравниваю параллельное выполнение а не атомарный доступ, это скажем так, принципиально разные вещи.
Почему у меня одна строка в проге не переведена? Суть: C++/Qt5, в *.ts файле переведёно всё (включая ту самую строку), lupdate/lrelease делал перед сборкой (он автоматически выполняется), но несмотря ни что одна из строк на форме не переведена. Что это вообще может быть?
>>895674 > Что сказать то хотел? Хотел сказать то, что и сказал - "про специфичные для языков подходы". Ты утверждаешь, что для C++ специфично писать IOC. Так вот, это неправда.
> Это отдельная тема, смысл ее затрагивать? я говорю про специфичные для языков подходы И я про них. Специфичный для C++ подход - взять готовую библиотеку, которых для lock-free несколько.
> Я сравниваю параллельное выполнение а не атомарный доступ Ты вообще непонятно что сравниваешь. Накидал терминов для той и другой стороны без упоминания конкретной задачи.
>>895922 Что мне должна дать эта ссылка, довн? Ещё больше убедить в твоей неадекватности?
Даже если в данном ABI вызов member-функций не отличается от вызова обычных функций (прост опервым параметром идёт this), то тип у функций, на которые указывает vtable, никак не (void())
При таком объявление у создаётся объект пользовательского типа Base и доступ к нему осуществляется через указатель? Или я через указатель обращаюсь к классу?
И еще, в первом случае с new, объект создается в куче, и при завершении области видимости, не могу вспомнить, вызывается ли деструктор. Во втором случае, без new (если еще и без звездочки), объект создается в стеке, и для него при завершении области видимости вроде бы должен деструктор вызываться.
>>896418 Нет, если у тебя указатель на тип Base в нем объявленые простые типы, то память освободится нормально. Но, если у тебя там еще что-то динамическое, то нужно писать свой деструктор с delete'ми, чтобы освободить все динамическое. Поправьте если ошибаюсь.
>>896409 Но если запустить этот код, то получается что нихуя она сама не освобождается. int main() { int b; { int a = new int; a = 5; b = a; } cout << b << endl; b = 2; cout << b << endl; system("pause"); } Результат 5 и 2
>>896422 Как же ты заебал. Эта тема тут обсасывалась уже десятки, если не сотни раз. Если ты делаешь объявление переменной: >> Base *p; то в таком случае, при выходе переменной p из области видимости ничего не произойдет, кроме высвобождения куска памяти под указатель размером size_t байт. Если ты не пользуешься умными указателями, деструктор тебе необходимо вызывать вручную, потому что иначе память под ОБЪЕКТ будет висеть без ссылок и освобождена не будет. Автоматически освободится только память под УКАЗАТЕЛЬ. Память, на которую ССЫЛАЮТСЯ УКАЗАТЕЛИ не освобождается сама.
>>896532 Дело в том, что ты можешь подрубить какуе-нить либу в которой будет такое же имя класса или объекта как в std, ну тогда получится передкларирование, ошибка.
>>896532 Пространства имен создали, чтобы изолировать множества имен друг от друга. Использование директивы `using namespace abc` позволяет обращаться к именам пространства имен abc без указания этого самого пространства имен (например, если указывать using namespace std, то векторы можно объявлять уже при помощи vector<...> а не srd::vector<...>), как минус - возможная коллизия имен. В глобальной области видимости такой хуйней заниматься не советуют (а если ты залепишь такую штуку где-нибудь в начале одного из заголовочных файлов своей программы, опять же в глобальной области видимости, то искать этот косяк будет еще веселее, когда ты про него забудешь и увидишь воочую коллизию имен). А вообще, в теле функции, да, можно, я так сам часто делаю, когда мне лень писать префиксы.
Как подключить библиотеку glaux к проекту? В примере говорят что нужно положить glaux.dl в корень проекта, и в dev-cpp в линкере указать -lglaux. Но в итоге выходит undefined reference to `auxSolidTorus'. Как сделать чтобы это говно нашло что ей нужно и запустилась?
Антоши, есть одна windiws form, там рисунок(многоугольник), нужно этот рисунок закрасить. На сколько я понял нужно просто передать координаты точек в FillRegion, но бля, как я не изгаляюсь - шлёт меня нафиг, а в инете примеры с прямоугольнами/треугольниами и там на этом всё и завязано. Как же передать эти точки?
>>897174 И да, и нет. Правильный ответ - функция-элемент "операторOP()" без явных параметров. Т.к. неявно все равно по ссылке передается вызывающий объект.
Робяты, дайте советоу. Хочу написать свою игру, по типу VN. Хочу именно на С с классами, так что RenPy не советуйте. А посоветуйте лучше каким графонием обмазаться. Пока смотрю на curses (для моего нище ноута) и SDL. Но рынок мной не до конца изучен, может есть что то что я не учел.
Второй вопрос, упарывался ли кто TDD на плюсах? Как? Чем ? Подводные камни?
>>897404 >А посоветуйте лучше каким графонием обмазаться. Каким ещё графонием? У тебя картинка с квадратиком и текстом, это даже на голом opengl в пару строк делается.
Чем тебе так всрались плюсы для такой хуйни — понятия не имею зато мысленно покатываюсь когда вижу что вместо перехода на какую-то ветку сюжета игра падает нахуй. Алсо, если всё же хочешь плюсы, но лень самому всё рисовать и писать совсем низкоуровенную еботу вроде менеджера ресурсов — посмотри на тот же Qt можешь даже на QML если анальной ненависти к жс-подобному говнецу нету.
TDD — это в первую очередь о динамических языках, в которых всегда нужно знать что вернёт функция (в т.ч. особенно её тип), и во вторую очень высокоуровенный, когда сделать ошибку в самой функцие а не алгоритме достаточно сложно. В статических, и тем более низкоуровенных языках мягко говоря бесполезна, как и остальные юнит тесты. Обычные ассерты помогают отловить куда большую часть ошибок. А дальше помогут только полноценные функциональные тесты с тестировщиками.
Сап аноны. Животрепещущий вопрос. Знаю кресты на уровне T ptr = new T(); delete T; Хочу вкатиться в современные плюсы. Как у вас сейчас модно передавать параметры? Пытался разобраться с пикрелейтедом, сложна. То есть сейчас по старинке писать f(const T&)? И что за хайп по owner<T> уже прошел, не надо так делать?
>>897714 move тебе нужен только тогда, когда у тебя определен конструктор &&. Т.е. у тебя там нетривиальный конструктор: память, например, выделяется и еще че нить. Хотя я сам не уверен
>>897769 В буквальном смысле, в GCC, например, там просто typedef value_type звездочка iterator; И когда я объявляю метод возвращающий итератор, как указатель, он не ругается, а MSVC ругается.
>>897762 > Почему в GCC и libc++ std::array<T, N>iterator и T-указатель это одно и то же, а в MSVC++ - нет? Потому что так можно. > Каждый блядский компилятор все делает по-своему. Имеет право. > Теперь я понимаю, почему так популярны толстые буст и Qt. Ну давай, расскажи, что ты там понял.
>>897778 >И когда я объявляю метод возвращающий итератор, как указатель, он не ругается, а MSVC ругается. Так это метод, возвращающий итератор или указатель? Определись.
>>897811 Я почитал конечно, но все таки почему нельзя просто создавать экзкмпляры других классов, как например в джаве без костылей, типо объявил T x, как поле класс и потом в конструкторе сделал x = new T(парамс)
>>897852 Ок, но через указатели все заработало внезапно, когда полем сделал указатель на объект класса и в конструкторе как раз сделал T x = new T(params) или это плохая практика?
Сап, двощ. Кто нибудь вообще знает более-менее вменяемые гуй-библиотеки на плюсах, которые не требуют кучу $ за коммерческое использование? Желательно кроссплатформа и функционал больше чем отрисовать окошко и кнопочку. А если таковых нет...
>>898206 gtk — жопаель. wx и fltk — что-то уровня mfc, чесслово. В куте меня смущает что часть библиотек под жопаелью, а так же там несколько редакций LGPL. Кстати, они что, берут деньги только за поддержку?
>>898223 > Кстати, они что, берут деньги только за поддержку? Коммерческая версия же, плюшки из которой попадают в опенсорц только через несколько релизов.
Наверное, это пишется не так: {1,2,3), a Nvector(1,2,3) (если конструктор написан правильно) - то есть, ты хочешь создать Nvector из этих чисел и использовать его.
Или твой конструктор может принимать std::vector из чисел, тогда будет так: Nvector(std::vector<int [или что там у тебя](1,2,3)).
>>893649 Тредов таки не завезли, вернее завезли, но на одном ядре. Окамль не умеет в multicore. Хотя что то пилится, но что хуй пойми. Такие дела. Но сам по себе язык охуенный и довольно быстрый, если компилируемый.
>ИРЛ используется побольше чем хачкель кстати, лол. Хачкель не используется вообще нигде. А на окамле пишется куча компиляторов, например компилятор Rust изначально был написан на нем. Из крупных дохуя продакшн он используется в Xen'е Пруф: https://mirage.io/ https://github.com/mirage
>>898455 >Окамль не умеет в multicore. Окамл-то может во всё, это то же самое что написать, мол, на плюсах до тредов в стд не было способа паралелить код. >Хачкель не используется вообще нигде. Ты сейчас удивишься, но используется. Другое дело что окемла больше он, внезапно, тупо намного практичнее, хотя и не так фичаст.
Думаю, стоит закончить минутку флуда т жизни в человеческих языках, пока кресторабы не забили насмерть.
Продолжаю изучать С. Прата - "Язык программирования С++. Лекции и упражнения, изд. 4". Дошел до абстрактного типа данных "Очередь (Queue)". И не могу разобраться в одном моменте из примера удаления элемента из начала очереди (см. пик). Может кто объяснит эту строчку кода?
P.S.: Попутно передаю привет издательству Вилльямс за перевод 6го издания, у которых "оператор" вдруг становится "операцией", а "бит - это набор единиц..." (в оригинале units of...). И за этот перевод они просят 2-3 килорубля.
>>898688 Что зачем? Ты вдруг ты захочешь как-то распорядиться удаленным элементом?
По идее, этот метод должен возвращать Item а не bool, а для индикации ошибки делать или ассерт(как в Qt) или дропать исключение (как в stl). Но тут сделали так.
>>898699 >По идее, этот метод должен возвращать Item а не bool, а для индикации ошибки делать или ассерт(как в Qt) или дропать исключение (как в stl) Или возвращать optional.
>>898223 > В куте меня смущает что часть библиотек под жопаелью, а так же там несколько редакций LGPL. В куте множественное лицензирование, GPL/LGPL/проприетарка.
Так что твой вариант - Qt. Ах да, это еще и самая лучшая гуй-платформа вообще.
>>898772 Ты дурак что ле? Ничто не мешает, но тогда ты не получишь экземпляр удаляемого элемента. А эта операция называется "получить первый элемент и удалить его из списка". Вытолкнуть в простонародье.
Типо как ты достаешь жевачку из пачки орбита - ты достаешь экземпляр для своих целей (сожрать), а в пачке эта подушечка исчезает. То что ты предлагаешь - просто достать ее и выбросить, не имея возможности сожрать.
>>898779 >>898701 >>898699 >Ты дурак что ле? Да вы сами ебланы. Вы блядь не могли сказать, что очередь - не самоцель. И что объекты из очереди берутся именно для того, чтобы над ними произвести какие-то действия.
Есть типичное ромбовидное наследование пикрил У B есть метод MethodB, виртуальный Творим такое: A a = new A(); D d = a; Как из переменной d вызвать MethodB, акромя использования dynamic_cast?
>>899289 Это кстати очень похоже на байт от гугла: они выпускают язык, пиарят его, мол, позволяет экономить на железе, а сами реализовывают идеи быстрее чем модные стартаперы с го и имеют с этого хороший профит.
Пишу курсач на С++, компилирую через clang++ 4.0 Задача - просто выводить на экран текстуру. Решил быстренько сделать это через opengl, но вообще не понимаю, как прикрутить glfw или sdl - готовые бинарники обычно скомпилированы для vs или mingw, да и хуй его вообще поймет как заставить линковщик их подхватить. Пытался собрать из исходников с помощью cmake, но эта срань не видит clang и пытается собрать для msvc.
Если использовать либы для msvc15, и в коде написать #pragma comment( lib, "glfw3" ) #pragma comment( lib, "glfw3dll" ) то получаю огромный список unresolved external symbol.
>>899536 У GCC (он же миниговны) и MSVC разные манглеры имен (да и форматы либ тоже), так что тут нужно точно знать для чего у тебя либы. Алсо, посмотри чуть-чуть CMake, емнип, на нем GLFW3 собирается нормально, будет проще, чем вот разбирать твою хуйню.
Cкажите, правильно я написал про signal/slot в QT или нет.
"Сигнал" - это вовсе не сигнал (какой придурок его так назвал?), а заголовок функции, который привязывается с помощью QObject::connect к существующей функции или методу, одному или нескольким, каждый из которых вызывается с теми же аргументами, с которыми выпущен сигнал.
При этом ввиду кривости языка C++ connect принимает не два аргумента (сигнал и слот, выраженные через объекты, которые связываются), а четыре (ссылки на объекты и ссылки на сигнал и слот).
Привет, мейлач. Можете гнать ссанными тряпками, я пойму, но интересует ответ на один вопрос. Вкатится в кресты решил ради одного эксперимента, сам до этого нихуя толком не изучал. Как-то пытался что-то сделать на PHP, дальше простенького кредитного калькулятора не ушел.
Суть вопроса: допустим, чисто теоретически, есть один пользователь. После всех приемов соц. инженерии, вы понимаете, что у вас есть возможность заставить человека запустить какой-то файл ровно один раз и ни разом больше. Цель: получение полного доступа к файлам компьютера, вебкамере, микрофону и т.д.
Что уже понятно: вы не будете использовать какие-то известные трояны, ratы и прочую залупу ибо раз они побывали в общем пользовании, то в 99% случаев палятся антивирусами. И вот вы решаете писать что-то самостоятельно, обладая нулевыми начальными навыками. Чтобы написать полноценный ратник уйдет охуенно большое количество времени, поэтому нужно более простое и быстрое решение. Какой бы вы выбрали путь? Т.е. что именно вы бы попробовали написать?
Мне в голову пришла только одна идея: написать какие-то ворота так скажем, какую-то простую утилиту, которая после установки человеком даст вам очень простой функционал: прием и запуск любых файлов с правами администратора на зараженном компьютере. Такая утилита помогла бы установить какой-нибудь кейлогер, какой-нибудь файловый менеджер с откликом на отдельный ip, какую-нибудь программу для трансляции с вебкамеры и т.д.
Собственно вопрос: я ебанулся и это нихуя не простая утилита получится, которую тоже охуенно долго писать придется? Есть какие-то более простые способы? Что бы ты выбрал, анон?
>>899671 Современные бесплатные антивирусы уже давно юзают поведенческий анализ. Им все-равно публичный бэкдор или нет, но если они видят, что это чудо тянет свои ручонки к вводу/выводу системы, они отрубают ему руки и рапортуют юзеру об очередном наглеце. Платные антивирусы еще и анус досматривают.
>>899671 >Какой бы вы выбрали путь? Т.е. что именно вы бы попробовали написать? Как раз пишу ратник, сейчас пилю келоггер на основе RegisterRawInputDevice. Самое сложное, видимо, будет написать графическую оболочку для админки (наверно, буду юзать кьюте) и свой сетевой протокол для более удобного получения инфы.
>Современные бесплатные антивирусы уже давно юзают поведенческий анализ. Обламывается же антиэмуляцией, не? Во всяком случае, мой криптор позволяет бес палева запускать всякие спидораки. Как еще можно повысить беспалевность?
>>899671 >вы не будете использовать какие-то известные трояны, ratы и прочую залупу ибо раз они побывали в общем пользовании, то в 99% случаев палятся антивирусами У меня кейлоггер на основе лоулвл-хука и raw input палился уже после компиляции в релизе, так что остается только криптовать.
Алсо, читали, какая дыра была в К. Спермском, благодаря которой raw input кейлоггер перехватывал данные даже из защищенного окна с виртуальной клавиатурой?
>>899684 Насчет крипторов тоже кстати искал тему. Ну изначально я смотрел в сторону самых свежих паблик ратов + криптора, но потом читал и читал форумы, еще раз читал и читал форумы, как итог понял следующее: паблик раты палятся, сильно и всеми палятся, дико ненадежные и отваливаются очень часто + вещают на сторону ибо постоянно с чем-то склеены, а паблик крипторы тоже палятся + еще и убивают стабы ратов часто так, что от него толку становится 0, он просто не установится.
Если есть какой-то отдельный тред для обсуждения подобной хуйни, я б перекатился, чтоб вам не засирать тут не по теме, но что-то при беглом взгляде не нашел ничего подходящего. Все тот же кун с вопросом
>>899687 >а паблик крипторы тоже палятся + еще и убивают стабы ратов часто так, что от него толку становится 0, он просто не установится Ибо надо писать рантайм криптор, а не пидорасить экзешник.
>>899689 Я правильно понял, что это криптор который будет вшит в тело программы и запускаться будет раньше основных функций программы, чтобы водить антивирусы за нос?
>>899693 Бегло погуглил и понял, что я от этого вообще очень далек. Эх, хуй с ним, может удастся найти какого-нибудь человека, который за небольшое количество шекелей реализует мою затею.
>>899698 За большое количество шекелей сделают. Алсо, нормальный ратник одному написать тяжело, а сделать народную малварь всем форумом не получится, ибо командная работа обязательно развалится. Так что давай сам учись.
>>900378 Это зависит от того, что такое textBox2 и что из себя представляет sender. Там, наверно, должно быть что-нибудь вроде static_cast<MainWindow1>(sender)->textBox2 ... Неужели нигде нет подобного участка кода, чтобы посмотреть, как там обращаются с подобными объектами?
>>900382 Ну вот есть подобный участок кода. textBox2_p это элемент windows forms, строка в которую юзер вводит данные, ну и мой код, который вызывает ошибку, я прописываю в кнопку.
>>900406 То же самое... >>900407 >_p Это просто буква "р" на конце, не суть ведь. Как ни странно, но ничего из этого не работает, всё та же ошибка. Может ещё где-нибудь копнуть?
>>898460 >Окамл-то может во всё Да не может он в multicore, это самый недостаток ocaml >Ты сейчас удивишься, но используется Ты сейчас удивишь, но не используется нигде.
>>899645 Сигнал - это функция, но ее генерирует MOC. Сигналы ты можешь вызывать без ключевого слова emit, в коде оно не значит ничего, даже для MOC-препроцессора.
>Ошибка C2440 инициализация: невозможно преобразовать "System::String ^" в "char" Как преобразовать этот злоебучий String^ хоть во что-нибудь, хоть в std::string, хоть в char?
>>892147 (OP) бля я раньше писал на крестах (до выхода c++ 11), потом несколько лет в него не лез, ЧТО СДЕЛАЛИ С ЯЗЫКОМ?? какие нахер decltype(auto)? constexpr? std::initializer_list? и еще куча говна, зачем они его так усложнили..
>>901441 >ЧТО СДЕЛАЛИ С ЯЗЫКОМ Попытались привести его к юзабельному виду. Не всегда удачно, но, в общем, стало заметно приятнее пользоваться языком. До этого он был вообще неюзабелен.
>>901666 Шлее - полная хуета, как по мне. Там две трети книги можно выкинуть и все равно останется еще до кучи всякого говна. Однако же, для самого начала, все же нужно разобраться, как работают сигналы-слоты (по-хорошему сразу красивый синтаксис, который пришел с c++ 11, а не то ебаное говно SIGNAL(signame) ... SLOT(slotname)) А так, проще всего будет научиться по примерам, если уже в крестах чего-нибудь да шаришь, да и документация у них небедная (не то, что у некоторых по доксигену - ни примеров, нихуя, своя терминология, заебешься порой).
Есть функция, которая в качестве одного из аргументов принимает float (*f)(float). Есть советы как написать передаваемую функцию внутри списка параметров функции принимающей? не гуглится
Жил-был СТРАУСТРУП. Шел обычный, скучный день. СТРАУСТРУП занимался рутинными вещами, такими как ебля своей трехсоткиллограмовой матери в зад. Только успев кончить матери в пердак и вынуть измазанный в говне хуй, СТРАУСТРУП услышал стук в дверь. Не заметив, что его мать умерла от сердечного приступа еще 3 дня назад, он пошел открывать дверь и вышел на веранду. На веранде никого не было. СТРАУСТРУП, было, уже начал подозревать СТЕПАНОВА в очередной подъебке, но вдруг, из под крыльца что-то вылетело и понеслось на него. От перевозбуждения СТРАУСТРУП уронил скрепленнеые скотчем очки на пол и смиренно ждал, что будет дальше. ЛЯМБДА, с огромной скоростью пролетела мима СТРАУСТРУПА, квадратной скобкой отпихнула его и заползла в дом, крепко заперев дверь. ЛЯМБДА ясно дала понять, что она приняла дом в качестве аргумента, но отказывается возвращать функцию, которая принимает ПИЗДЮЛИ в качестве аргумента и возвращает дом. ЛЯМБДА заползла на стул перед компьютером и свернувшись в уютный клубок, зашла на ДВАЧ. СТРАУСТРУП знал ЛЯМБДУ. По крайней мере, это слово он точно слышал, но не знал, что оно значит. Он очень удивился, когда недавно узнал, что ЛЯМБДУ включили в НОВЫЙ СТАНДАРТ, принятый полгода назад. СТРАУСТРУП понял, что надо выгнять ЛЯМБДУ из дома, потому что желание в очередной раз залезть на мамочку было слишком велико. Будучи первоклассным инженером, СТРАУСТРУП начал искать решение проблемы. Для разминки он решил повторить таблицу умножения до 12 на 12. Он 2 часа стоял на одном месте и смотрел в никуда, потея как свинья. Пока он боролся с таблицей умножения, из за угла вышел измазанный в говне АНДРЕЙ АЛЕКСАНДРЕСКУ и осмотрелся. Рядом стояли несколько зданий, включая психбольницу для буйнопомешанных и тюрьму. АНДРЕЙ задумался и понял, что в округе нет ни одного настолько больного и гнилого человека, чтобы продать ему свою книгу. Небрежно посвистывая, АНДРЕЙ удалился. СТРАУСТРУП закончил разминку и начал думать, как прогнать ЛЯМБДУ. Вдруг его осенило. Его дом был скомпилирован последней версией GNU G++, которая поддерживает ЛЯМБДУ. Именно поэтому, ЛЯМБДА и смогла проникнуть к нему в дом. СТРАУСТРУП понял, что ему нужна более старая версия G++, которая не поддерживала ЛЯМБДУ и тогда, при попытке компиляции дома, ЛЯМБДУ выкинет вместе с СООБЩЕНИЯМИ ОБ ОШИБКАХ. Но старую версию было негде взять. СТРАУСТРУП нанял ФУНКЦИОНАЛЬЩИКА СО ШТАНГОЙ за 5 тысяч рублей. Так как компьютера у них не было, ФУНКЦИОНАЛЬЩИК вначале написал на бумажке компьютер в 1 строчку НА ХАСКЕЛЕ: Computer = Computer ФУНКЦИОНАЛЬЩИК сожрал бумажку и высрал работающий системный блок с ВОДЯНЫМ ОХЛАЖДЕНИЕМ и предустановленой WINDOWS 7. На компьютере уже был установлен АЛАН ВЭЙК и ХАСКЕЛЛ ПЛАТФОРМ. Корпус был красного цвета, с наклейкой ТУРБО на прозрачной боковой крышке. Затем ФУНКЦИОНАЛЬЩИК написал в 2 строчки старую версию G++: Compiler :: [C++SourceCode] -> [ExecutableFile] Compiler source =(Link . Compile) source СТРАУСТРУП взял исходники своего дома и запустил компиляцию. Компилятор начал дристать СООБЩЕНИЯМИ ОБ ОШИБКАХ. СТРАУСТРУП попытался разобрать первую строчку, но увидев такое, дальше лезть не решился(таблица умножения и так вымотала его): std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::map<std::basic_string<std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > > Высрав 10 000 СТРОК СООБЩЕНИЙ ОБ ОШИБКАХ, компилятор скончался от ЛЕНИВЫХ ВЫЧИСЛЕНИЙ ПРЯМОЙ КИШКИ и из монитора вылетела ЛЯМБДА. Придерживая круглые скобки квадратными скобками, ЛЯМБДА в ужасе съеблась под ближайший камень. Ей еще долго не захочется принимать и возвращать значения. Довольный СТРАУСТРУП плюнул в руку, чтобы наслюнявить хуй и уже решился залезать на мамочку, но передумал и решил вначале запостить эту историю на ДВАЧ.
Банально не знаю, как гуглить такое. Попался кусок кода, а я в нем не понимаю, что делает конструкция такого вида: (--top) = n; n имеет это int топ до этого объявлялся так: int arr, top; arr = new int[size]; top = arr + size; штука с -- мне понятна, оставил ее на всякий случай, а вот что делает * слева от знака присваивания непонятно.
>>902682 Забыл про макабу фикс (тут звездочка)(--top) = n; n это int топ до этого объявлялся так: int (тут звездочка) arr, top; arr = new int[size]; top = arr + size;
>>902198 в крестах лямбды - синтаксический сахар и если принять это и не бесится по этому поводу, то они катастрофически сокращают объем кода в нужных местах, упрощают его понимание (что и должен делать хороший syntax sugar)
стл пиздец мозги коробит. Уже стал замечать, что начинаю забивать на структуры и юзать только pair. Говнокод состоит из for (const auto& hui : pizda) hui.second.second.fist.second() чуть менее чуть полностью.
Есть двумерный массив элементов PictureBox pb. Есть двумерный массив Arr такой же размерности с некими данными. Как сделать, чтобы при нажатии на, к примеру, pb[1, 2] в переменную A записывались данные из Arr[1][2]?
>>902851 Например у каждого PictureBox выставляешь таг в зависимости от координат PictureBox. Пишешь обработчик события onClick который считывает таг PictureBox которое вызвало событие и записывает нужные данные. Вешает обработчик на все PictureBox.
>>902866 У меня лётчик.жпг for(int i...) for(int j...) { pb[i,j] = gcnew System::Windows::Forms::PictureBox(); pb[i,j]->Tag = ???; } ... System::Void PictureBox_Click(System::Object^ sender, System::EventArgs^ e) { a = Arr[???][???]; } Что должно быть вместо вопросительных знаков?
>>903038 GCC то соберет, а вот как ты виндовский бинарник будешь на линупсе запускать без вина, вот это мне уже интересно. У них, мало того, что загрузчик в память различается, так еще и API совсем разные.
>>903052 Ну так я и не собирался ехе под линукс, у линукс есть свой формат, не знаю какое расширение, ну ведь хелло форлд запустится, какие-то общие моменты можно найти
>>903038 Под кроссплатформенностью подразумевается компиляция из одних исходников без их изменения. >>903067 > хелло форлд запустится, какие-то общие моменты "хелло форлд" это I/O - там просто так никаких общих моментов не может быть, разработчикам нужно договариваться. Хелло ворлд - технически достаточно сложная программа. У нее исходник простой, так как сложность скрыта библиотеками и системным апи.
>>903067 Взгляни на программу для DOS и Linux на ассемблере (простейший hello world) и увидишь, что уже, как минимум вызываются программные прерывания с разными номерами, это простейшие примеры того, что бинарники не совместимы теперь уже совсем.
>>903251 Да, это пиздец. Вызывать методы у nullptr это UB. Но такую хуйню, как на твоих картинках, делают даже в казалось бы нормальных проектах типа Qt. интересно, что мартышки, хуесосящие STL и восхваляющие Qt на это скажут, лол. Но этому недолго осталось быть, недавно вышедшая версия g++-6 при constant propagation наконец-то полагает, что this != nullptr и, следовательно, код вида if (this == nullptr) { do some shit } просто вырезает, т.к. условие всегда ложно.
>>903272 >Как цветовая схема называется? Вручную настраивал. >боги используют корутины, а не колбэки Это клиентский код мобильныйх платформ. Да, я рву шаблоны С++14 кроссплатформой под мобилы. Конечно корутины и там можно сделать, но в крестах корутины в принципе ненужная вещь в себе.
>>902990 первое: прямой доступ к памяти (тк нет виртуальной машины) второе: предсказуемое время выполнения исполняемого кода (тк нет сборки мусора) третье: механизм реализации шаблонов отличен от механизма ява дженериков, что в конечном итоге дает более быстрый код
>>902992 лучше говорить что с++ код имеет предсказуемое время выполнения в общем это справедливо будет для языков с прямым управлением выделения-освобождения памяти и языков с управлением памяти основанным на подсчете ссылок и неверно для языков где реализована сборка мусора
>>903273 А так и должно быть, кресты скоро взъебут джаваскрипт изъебством синтаксиса, при сохранении перформанса, и это прекрасно. >>903275 >И на каких платформах это работает? Ну mobile-first крестоядро, Ios и Android, для взаимодействия с Java и Swift кодом - кодогенераторы интерфейсов. Можно под windows-phone легко портировать, там кресты искаропки. А так как вообще взя бизнес логика в крестоядре, линкуемом с опенсорсными статик либами, то и под десктопы влегкую. >>903276 Табы
>>903285 Хачкель ненужное говно для матанонеудачников. Ты не поверишь, но я как то компилил Окамль со всем рантаймом внутри в статик либу под Ios. Но при этом я бы никогда не смог объяснить заказчику, да и себе, зачем это нужно на реальном проекте. Да и на крестах можно такие боярские изъебства с дженериками мутить, что можно смотреть на хачкеледаунов свысока. Вот тебе отрывок из constexpr string'ов, с возможностью constexpr хэшинга, которые я как то для фана писал.
>>903301 В первый раз onError колбэкается при низкоуровневых ошибках, вроде отсутствия интернет-соединения, в onResponce делается парсинг джсона от сервера и там тот же самый onError колбэкается, если сервер в джсоне ответил ошибками валидации данных. Потом вся эта хрень пропагируется из крестоядра через автогенерируемые интерфейсы (Errordescriptions - это typedef для автогенерируемого класса) в ui-код на Swift и Java 8, где уже и показывается пользователю. Отака хуйня.
>>903297 А теперь, друг мой дорогой, объясни нам, глупышкам, кому вообще сдалось хешировать строки на этапе компиляции, нахуя ждать по десять минут пока скомпилится твой высер и насколько это быстрее аналогичного кода на С длиннй в 20 строчек. а еще насколько читабельнее ошибки компиляции
>>903328 >Зачем constexpr в параметре шаблона? Нет такого >Что за constexpr inline? Почему касты C-style? Потому что constexpr прилепил к C-коду, оно конечно всегда inline, но компилится и похуй. >>903329 >логин/пассворд поменяй на const ссылку Оно по std::move в эту функцию приходит >>903340 > нахуя ждать по десять минут пока скомпилится твой высер Ох уж эти маразматичные одеревенелые борцуны с темплейтами. На Pentium 3 компилишь? Принципиально на с++98 пишешь и всех вокруг заставляешь? А то ишь понакодили синктаксических сахаров, деды без auto писали, пусть и они страдают! Из-за таких как ты кресты не станут great again. Cпециально же отметил, что писал для фана. Вообще мне захотелость передавать constexpr стринги как параметр темплейта, а там и со string literal operator templates можно мутить всякое, вроде: https://habrahabr.ru/post/243581/ Но, еще раз повторяю - оно для фана, и ,вообще, да, нахуй оно никому не сдалось, конечно.
>а еще насколько читабельнее ошибки компиляции Статик ассерты повтыкал с нужным тебе сообщениями ошибок и теперь хоть обдрочись на читабельность ошибок
>>903340 >нахуя ждать по десять минут пока скомпилится твой высер Каково это кстати в 2017-м без STL жить из-за фобии долго компилить темплейты? Туда ли ты вообще зашел, plain-С петушок?
>>903415 Самого трупа страуса посмотри/почитай, он годно всех призывает перебороть академическую закостенелость в массовом кресто писательстве и войти в светлый мир современных крестов. Он вообще советует начинать изучение с 11 и 14 стандартов, а прошлый забыть как страшный сон. Как бы только еще эту мысль самого создателя языка донести до лысеющих тимлидов под 40 и совсем уже лысых преподавателей в вузиках, считающих, что всякая auto и лямбда от лукавого. Вот сириусли, так же как церковь в свое время тормозила прогресс, сжигая ученых, так же и они своим превратились в неадекватных консерваторов, не принимающих новое только из-за своей закостенелости.
>>903418 Ты про что, про string literal operator? Везде где есть с++14 компилится уже, правда у меня с определенного момента изъебства Clang начал компилится через раз, лол. Добавишь пробел - компилится, уберешь - segfault компилятора. Я поэтому и написал свой класс constexpr стрингов с объявлением из макроса, тому шо через литеральный оператор падало.
>>903415 А ну и конечно главный дар человечеству, подаренный 11-м стандартом - это модель памяти. Читай про std::atomic и учись его применять. Сначала прочитай главу 5 параллельного программирования на c++ в действии https://rutracker.org/forum/viewtopic.php?t=4373610 Потом можешь читнуть цикл статей про lock-free структуры этого достойного человека https://habrahabr.ru/post/197520/
>>903423 Про передачу строк в качестве шаблонных параметров, или как оно там правильно называется (проебал номер предложения), в общем это: >>template<typename char_t, char_t ... chars>
>>903425 Кстати, про lock-free структуры. Этот тип упомнял про семантики acquire/release/consume/relaxed/seq.cst., однако нихуя не рассказал про семантики #LoadLoad, #LoadStore, #StoreLoad, #StoreStore, поэтому (во всяком случае для меня) начало статьи было нихуя не понятно. Вот тут про них подробнее: http://preshing.com/20120913/acquire-and-release-semantics/
Если я -- умственно отсталый, изучающий кресты ровно один месяц, стоит ли мне уже сейчас пробовать использовать библиотеки из boost? Например, там есть is_palindrome.hpp; мне можно элементарно включить в проект VS, затем вызывать, когда необходимо?
>>903811 Ну с 'Ю' там сложный вопрос. Стандарт никак не определяет какой набор символов можно использовать. Возможно в С стандарте что-то определено, хотя бы минимум. То есть, является ли 'Ю' допустимой символьной константой будет зависеть от компилятора. Но. В задании вопрос про "недопустимую запись символьной константы". 'Ю' это допустимо записанная символьная константа, даже если она сама по себе не является допустимой для конкретного компилятора. А "\022" это именно недопустимая запись символьной константы
>>903882 Монады vs что угодно. >>903889 Дык, точки заставляют писать на 2 символа больше чем стрелочки (скобочки требуются при разыменовании), это однозначный вин стрелочек.
>>903920 Ну я вот считаю что текстовые макросы лучше этого говна на тайпклассах. Давай, сучка, возрази мне. на самом деле я хочу быстрее заспамить этот тред и перекатить в новогодний но нг, лол
Господа, имею вопросы: скачал себе книгу Страуструпа, установил CLion. Что я вижу? Он предлагает записывать хелловордл так:
#include "std_lib_facilities.h" int main(){ cout<<"Hello, World!"; return 0; }
ПОшёл на его сайт, скопировал оттуда код для этой библиотеки. В итоге ничерта не работает код, пишет ошибки в этом стд Работает в CLion (они даже сами создают хелловорлд, когда новый проект делаешь):
#include <iostream> int main(){ std::cout<<"Hello, World!"; return 0; }
Стоит ли дальше по этой книге продолжать изучать? не будут ли такие расхождения нарастать в количестве? Что это вообще?
Адреса в стэке это адреса в виртуальной памяти? Значит при каждом следующем запуске хэлоуворда все адрреса должны быть одинаковыми? Тогда почему отсчёт идёт не с нуля? Почему у функции main каждый раз разный адрес? По ассемблеру давно какую-то брошюру читал. Что почитать чтобы понять как компилятор и линковщик с этими адресами работают?
>>903982 >ASLR Не это не всё. Вот например если создать объект в одной программе. Ввести его адрес в другую и разыменовать. Естественно с самым послушным кастом превратить его в указатель нужного типа. Вторая программа не найдёт объект первой программы. Даже если адреса специально рандомизированы, то это должно было сработать. А раз не сработало, то эти адреса в виртуальной памяти. Тогда что с динамической линковкой? Там же происходит почти то же самое. Известны только относительные адреса и надо передать их другой программе.
>>904082 Зачем тебе std_lib_facilities.h? Естественно, чтобы это начало собираться, тебе необходимо наличие этого файла в путях поиска или в текущей рабочей директори. ЕМНИП, он в этот файл заносит включения необходимых заголовочных файлов из std, ничего более. Так что можешь выкидывать файл к ебени матери и заменить этот include непосредственными включениями стандартной библиотеки. Как раз в твоем случае #include <iostream> вполне досаточно.
>>904094 Спасибо, именно этот ответ и хотел услышать. >>904131 Не притворяйся мной >>904091 Блядь, эта книжка в шапке для нюфань. Ну посоветуй лучше какую-либо.
Чтоб воду в ступе не толочь,
крестовики обязаны трудиться,
и день и ночь, и день и ночь.
Коль отведёшь хотя б мгновенье
Одно для отдыха его,
То сразу рухнет без сомненья,
Производительность софта.
А коли дашь ему доп. пайку
Оберегая от забот,
То он последнюю фуфайку
На драфт стандарта проебёт.
А ты лупи его по заду,
За пейсики дери его,
Такой язык для этих гадов,
Поверь, доходчивей всего.
(с) Страуструп, 1983. Апокрифы крестового завета.
Шапка: https://github.com/sosachbot/cppthreadhat/wiki
Прошлый: https://2ch.hk/pr/res/886043.html